str_replace
替换字符串、替换汉字,字母区分大小写
0 1 2 |
//echo $str = str_replace($a,$b,$c,$i); //echo '共替换了'.$i.'次'; //在$c中查找所有的$a,把所有的$a替换成$b |
在上一例中, $a,$b,$c都可以是数组或字符串,或三个变量中又有字符串又有数组
$i是可选的,返回替换次数。
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
//==========$a,$b,$c全部为字符串========== //例一 echo $str = str_replace('ac','M','bac abc dacf'); //输出 bM abc dMf //==========$a,$b,$c全部为数组========== //例二 $a,$b,$c数组成员个数相等 $a = Array('a1','a2'); $b = Array('b1','b2'); $c = Array('a1 c1 a1','a1 c2 a2'); $str = str_replace($a,$b,$c,$i); print_r($str); echo '<br>'; echo $i; //输出 Array ( [0] => b1 c1 b1 [1] => b1 c2 b2 ) //4 //例三 $a,$c数组成员个数相等,$a数组成员比$b数据成员个数多 $a = Array('a1','a2'); $b = Array('b1'); $c = Array('a1s c1s a1s','a1s c2s a2s'); $str = str_replace($a,$b,$c,$i); print_r($str); echo '<br>'; echo $i; //输出 Array ( [0] => b1s c1s b1s [1] => b1s c2s s ) //4 //例四 $a,$c数组成员个数相等,$a数组成员比$b数据成员个数少 $a = Array('a1'); $b = Array('b1','b2'); $c = Array('a1s c1s a1s','a1s c2s a2s'); $str = str_replace($a,$b,$c,$i); print_r($str); echo '<br>'; echo $i; //输出 Array ( [0] => b1s c1s b1s [1] => b1s c2s a2s ) //3 //例五 $a = Array('a1','a2'); $b = Array('b1','b2'); $c = Array('a1s c1s a1s','a1s c2s a2s','a1sa2s a2'); $str = str_replace($a,$b,$c,$i); print_r($str); echo '<br>'; echo $i; //输出 Array ( [0] => b1s c1s b1s [1] => b1s c2s b2s [2] => b1sb2s b2 ) //7 //==========$a,$b为数组,$c为字符串========== //例六 $a,$b为数组,$c为字符串 $a = Array('a1','a2'); $b = Array('b1','b2'); $c = 'a1s c1s a1sa1sa2s a2'; $str = str_replace($a,$b,$c,$i); print_r($str); echo '<br>'; echo $i; //输出 b1s c1s b1sb1sb2s b2 //5 //例七 $a = Array('a1','a2'); $b = ''; $c = 'a1s c1s a1sa1sa2s'; $str = str_replace($a,$b,$c,$i); print_r($str); echo '<br>'; echo $i; //输出 s c1s sss //4 //例八 $a = Array('a1','先生'); $b = ''; $c = 'a1s c1s 织梦先生s'; $str = str_replace($a,$b,$c,$i); print_r($str); echo '<br>'; echo $i; //输出 s c1s 织梦s //2 //例九 这个例子有点意思 $a = Array('a1','先生','织梦s'); $b = ''; $c = 'a1s c1s 织梦先生sa'; $str = str_replace($a,$b,$c,$i); print_r($str); echo '<br>'; echo $i; //输出 s c1s a //3 //例十 这个例子和上一个例子说明一个问题 $a = Array('a1','织梦s','先生'); $b = ''; $c = 'a1s c1s 织梦先生s'; $str = str_replace($a,$b,$c,$i); print_r($str); echo '<br>'; echo $i; //输出 s c1s 织梦s //2 //例十一 出错,证明这样是不允许的 $a = 'a1'; $b = Array('b1','b2'); $c = 'a1s c1s 织梦先生a1s'; $str = str_replace($a,$b,$c,$i); print_r($str); echo '<br>'; echo $i; //提示出错 PHP Notice: Array to string conversion in E:\Test\test.php on line 6 //意思就是在$a为字符串时,$b也必须是字符串 |
str_replace小结:
$a,$b,$c全部为字符串时好理解,就不说了。$a,$b,$c全部或分别为数组的时候,在某些条件下是很有用处的。
1、当$a,$b都为数组时,即是使用$b[0]替换所有$a[0]的字符,使用$b[1]替换所有$a[1]的字符……也就是说是使用$b数组的对应键的值替换$a数组中的对应键的值;如果$b成员个数小于$a的成员个数时,用空代替。
2、$a可以为数组可以为字符串,但是当$a为字符串时,$b必须为字符串
3、每次替换都是替换新最新的对象($c),看“例九”,先用“a1”在$c中进行查找替换,再用“先生”在$c中进行查找替换,此时$c=’s c1s 织梦sa’,现在使用$a中最后一个成员“织梦s”对$c字符串进查找替换。
strtr
字符转换
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
//例十二 $a = 'a1织梦先生写CSS,把不支持手机浏览的页面修改成响应式页面mrdede.com'; $b = Array('a1'=>'我的','cs'=>'工','CS'=>'[改变]','不支持手机浏览的'=>'PC'); $str = strtr($a,$b); print_r($str); echo '<br>'; //输出 我的织梦先生写[改变]S,把PC页面修改成响应式页面\\mrdede.com //例十三 说明每次转换都是对原始字符串进行转换的 $a = 'a1织梦先生写CSS,把不支持手机浏览的页面修改成响应式页面mrdede.com'; $b = Array('a1'=>'我的','我的'=>'','写CSS,'=>''); $str = strtr($a,$b); print_r($str); echo '<br>'; //输出 我的织梦先生把不支持手机浏览的页面修改成响应式页面mrdede.com //例十四 $a = 'a1织梦先生写CSS,把不支持手机浏览的页面修改成响应式页面//mrdede.com'; $b = 'aC'; $c = 'Ac'; $str = strtr($a,$b,$c); print_r($str); echo '<br>'; //输出 A1织梦先生写cSS,把不支持手机浏览的页面修改成响应式页面//mrdede.com //例十五 与例十四输出内容相同 $a = 'a1织梦先生写CSS,把不支持手机浏览的页面修改成响应式页面//mrdede.com'; $b = 'aC'; $c = 'Acmrde'; $str = strtr($a,$b,$c); print_r($str); echo '<br>'; //输出 A1织梦先生写cSS,把不支持手机浏览的页面修改成响应式页面//mrdede.com //例十六 与例十四例十五输出内容相同 $a = 'a1织梦先生写CSS,把不支持手机浏览的页面修改成响应式页面//mrdede.com'; $b = 'aCmr'; $c = 'Ac'; $str = strtr($a,$b,$c); print_r($str); echo '<br>'; //输出 A1织梦先生写cSS,把不支持手机浏览的页面修改成响应式页面//mrdede.com //例十七 可以转换中文,但是有乱码,可以解释为不可以这么转换中文,使用例十二写法可以转换中文 $a = '织梦先生写CSS,把不支持手机浏览的页面修改成响应式页面//mrdede.com'; $b = '织'; $c = '在'; $str = strtr($a,$b,$c); print_r($str); echo '<br>'; //输出 在梦先唟写CSS,把不支持手机浏览嚄页面修改成响应式页面//mrdede.com //例十八 字符串没有改变,说明不可以转换成空内容 $a = '织梦先生写CSS,把不支持手机浏览的页面修改成响应式页面//mrdede.com'; $b = 'CSS'; $c = ''; $str = strtr($a,$b,$c); print_r($str); echo '<br>'; //输出 织梦先生写CSS,把不支持手机浏览的页面修改成响应式页面//mrdede.com //例十九 $a = 'a1织梦先生写CSS,把不支持手机浏览的页面修改成响应式页面//mrdede.com'; $b = 'aCdm'; $c = 'A '; $str = strtr($a,$b,$c); print_r($str); echo '<br>'; //输出 A1织梦先生写 SS,把不支持手机浏览的页面修改成响应式页面//mr e e.com |
strtr小结:
1、例十三说明,每次转换都是对原始字符串进行转换的,并不是对新字符串转换。
2、在$b和$c全为字符串时,是使用$c的第1位替换$b的第1位字符,使用$c的第2位替换$b的第2位字符……对应位没有字符,则不做转换处理。
总结:
函数str_replace与函数strtr各有个的使用场景,多做一些实例的测试感觉挺有意思的,也使我们能更深入的了解并理解它的更多功能,把这些积累的经验运用到开发过程中,解决一些实际问题,达到节省开发时间或脚本运行的更优化。
如果发现我的问题或者有疑问,请指出或者一起探讨学习。织梦先生QQ1234567