答案:____________( s! C% Z1 ]8 u- x
3 c4 W; m' r4 [7 p( W
$ [4 C F# d: V) O& E20.以下脚本输出什么?
<?php
$x = 'apple';
echo substr_replace ($x, 'x', 1, 2);
?>
复制代码
A.x. o- V& H5 b7 ?1 @8 S
B.axle 2 ^( U9 V5 ~ _# Q# z/ iC.axxle k0 }) @2 d' wD.applex$ c; Y' [" m. ~- P7 o
E.xapple- r9 M, B j6 ~+ q' I* m9 T" i
- D# m$ _) ~1 R7 X5 e2 i, K% `
; z: H1 } k3 u9 l Y7 P
0 e+ t$ }/ _( U
答案速查 $ Y9 K; t% y, [& x. h& d6 ^: P1:D# [$ Q! @3 o" H
2:A 8 {/ Y% b$ y7 i5 h; D. d3:D 1 D; p6 S) U1 @4:D3 Y+ U, {! O m
5:D , j) u2 ^3 u( `2 P6:E; c* \+ }6 h1 h h
7:ABE # h# Q: S, ~& {1 u4 v* D6 p1 @! X8:E7 `6 c' U) \4 `2 `' E" A
9:AD 1 d5 n' ?" z# Y/ T10:D& w# w$ b6 f0 h& S
11:B& p0 z1 G+ F! x2 |' c7 E5 R/ U
12:CD 3 I1 t$ f/ B! X" A! S) o13:BE4 o+ O/ H) h! v. d. T4 i
14:B0 d- A& Y ~" {; K1 f) Q. Z3 z7 |! |1 K
15:C8 F: z6 n+ c* T$ N& U. P
16:C7 B9 Y7 ?' b2 \& e+ Q% c0 C
17:BD* v' g. w7 |" j. A( N s
18:str_pad 5 h1 g! o4 ^, z19:ablecostscindy 0 ]6 a; a Y& {" `! K20:B2 p# B1 s# C" [1 c. b# C! j( C
5 W# C& o1 I4 D" _6 ~) h' D h; U8 r( L8 ]
1 Z4 e0 n+ U9 Y9 F! q7 j
( k8 g; c% o9 y, a答案详解% W" Z- B% L3 u' D6 d
4 g4 ~2 z# F$ _6 S8 a7 o
1.substr函数能够胜任,但考虑到输出三个字母就需要三次调用该函数,所以排除此方法。那么$alpha{$val}和$alpha{$val+1}是仅有的两个可能输出题目要求的字符串的选项。因为0是数组的第一个索引,所以答案是D。9 C: R6 M6 H( S! w- A
% O$ A( P2 w; z6 P
2.除了A以外的选项都能输出题目要求的字符串。PHP中,加号(+)不能把两个字符串合并成一个。 2 ]. C3 t9 k. g3 W3 Z+ ] 3 Q* n7 r3 @: |$ k3.substr函数返回字符串的一部分,而strpos函数擅长从一个字符串中找出某个指定的子串。同时使用这两个函数将满足题目要求。注意,前一个函数从0开始索引,而后者不是,因此需要+1。答案是D。 " t |) p* e+ h% N- f M7 C2 Z" Y5 v$ B! Z4 r; J4.答案是D。explode函数使用一个字符串分隔另一个字符串,并把结果放入一个新建的数组。strtok函数也可以做同样的事,但需要多次调用。/ O. }! Y _" l# a% t* h
: g7 `: O+ e* G; @
5.答案是D。strcmp()提供了安全的字符串比较机制。注意,选项C是错的,strcasecmp()不是一个“万能”函数,因为它不区分大小写。 ; f4 T, l' I0 W+ r 7 x0 D+ Z u% _7 o" ]: u3 Q6.选项中没有一个正则表达式能真正代表题目所给字符串的匹配方式,但是选项A和E仍然能勉强匹配。选项A太普通了,它能够匹配任何字符串,因此答案是E。8 g3 [: h; }0 r. J: \5 c+ o" f
& c6 ]3 a- @! l& |/ L- p0 @
7.正确答案是A,B和E。用crypt()和str_rot13()来验证一个字符串是否被改变,效率很低。crc32()比前面两个函数好些,如果能容忍一些小错误的话,它是个不错的选择。 2 n) ~7 E% h* y0 X6 y 5 C: ^ x# s: H5 f- X8.file函数将文件的文本内容读入一个数组,每个元素是一行。因此答案E正确。也许你想知道为什么要把这样一个题目放在讲字符串的章节中,那是为了提醒你每一章的题目所包含的知识点并不是绝对严格区分开的,正如写PHP脚本时,file函数不能脱离字符串函数单独存在一样。 ) @; R, I" Z& }) j; p * K) O, b4 C- O( I. v9.尽管条件不同,但preg_split和explode函数都能满足题目要求。ereg()拿一个正则表达式匹配一个字符串;str_split()按固定长度分隔字符串;而chop()则是rtrim()别名,用来移除字符串末尾处的空格。 $ u$ N% a: l, L( R3 h& v' {6 i# E8 I1 ?# C
10.本题考察你对字符串操作及操作符优先级的认识。连接运算符(.)的优先级比加号(+)高。因此PHP解释器实际执行的运算可以表示为('Testing ' . 1) + (2 . '45')。由于字符串test 1不是数字,所以加号前面的运算等于0。加号后面的运算等于245,PHP输出的结果是0+245,等于245,所以答案是D。 2 y! {9 e9 G9 r: t- b5 U2 w8 i- C7 S" e 2 j, {& [1 o3 Y- T4 Q: M11.可以用访问数组元素的方式访问字符串中的字符,因此脚本只是把字符串中的第二个字符($s[1])替换成了字符2,最终将输出12245。答案是B。3 B# q- `2 K4 Y* n- e d
) k4 a" U6 X `, }' V9 F12.本题的要点是理解这个正则表达式的含义——从左往右,首先是零个或多个任意字符(.*),跟着是一个星号(\*),然后是123,最后是一个数字。因此答案是C和D。4 T9 M% ^# u/ x* u# M. c2 t$ }. @
" y: S: {, b9 o: g1 t o7 X13.B和E正确。选项B中,在比较时,字符串top等同于数字0。==操作符不比对数据类型,所以将返回true。答案E中,字符串123等同于数字123,比较将返回true。 - u% ^# F l. W: z7 G2 P0 j( `6 }' t ~7 d: u. E# C. R' C% e
14.字符串将被转换成数字(如果无法发生转换就是0),然后与整型数字相加。答案是B。7 x) C! W3 C) f! B _