phpphp 替换多个字符串字符串中多个指定的字符为固定形式

  strtr()
  str_replace()
  substr_replace()
  preg_replace()
strtr()的用法:
3 $str = "test";
5 $str1 = strtr($str, 't', 'z'); // zesz
6 $str2 = strtr($str, 'tt', 'z1');// 1es1
7 $str3 = strtr($str, 't', '');// test
8 $str4 = strtr($str, 'ts', '12');// 1e21
11 $str5 = strtr($str, array("t" =& '')); // es
12 $str6 = strtr($str, array("e" =& 'www', "s" =& "hhh"));// twwwhhht
  有两种传递参数的格式,一种是数组k=&v形式,一种是两个字符串的形式。
一,字符串情况 &&string strtr ( string $str , string $from , string $to ):
  search参数的每个字符和replace参数的字符对应(这个是该函数用法关键)。如果search中出现相同的字符,会按照search中最后一个字符对应的replace参数的字符代替(如第6行代码)。
  如果search或者replace是空字符串,则不会被替换,原样输出(如第7行)。
二,数组k=&v情况 &&string strtr ( string $str , array $replace_pairs ):
  这种情况比较简单,就是把字符串中的k替换成v
str_replace()的用法: &mixed str_replace ( mixed $search , mixed $replace , mixed $subject)
3 $str = "test";
5 $str1 = str_replace('t', '', $str);// es
6 $str2 = str_replace('es', 't', $str);// ttt
8 $str3 = str_replace(array('t', 'sa'), array('a', 'b'), $str);// aeb
9 $str4 = str_replace(array('t', 'sa'), array('a'), $str);// ae
10 $str5 = str_replace(array('t'), array('a', 'b'), $str);// aesa
11 $str6 = str_replace(array('t', 's'), 'e', $str);// eeee
13 $arr = array(
'a' =& 'testa',
'b' =& 'testb',
'c' =& array(
'ca' =& 'tes1',
'cb' =& 'tes2',
22 $arr1 = str_replace('es', 't', $arr);
24 $arr1 = array(
'a' =& 'ttta',
'b' =& 'tttb',
'c' =& array(
'ca' =& 'tes1',
'cb' =& 'tes2',
str_replace()在使用上比较简单:
  字符串上的使用,replace直接替换掉search,注意这里就不是字符对应,是俩参数字符串对应(区别于strtr()函数)。
  数组上的使用(值得一提的是:前一个对应元素替换完得到的结果再应用到下一个对应元素【会发现第9行的sa被替换成空了,而sa是第一步替换完得到的子串】。):
search和replace都是数组的时候:如果是两个数组元素个数相等,各个参数对应(如第8行)。如果search个数大于replace的话,多余的就被空字符串替换(如第9行)。
search是数组,replace是字符串的话,就是字符串中出现的数组各个值被被replace替换(如第11行)。
比较意外的用法:str_replace()可以处理数组的值,结果也返回数组。。这个就可以免去程序员手动循环数组了,经测试,只能对一维数组生效(如第22行)。
substr_replace()用于替换字符串的子串。使用方法:是指定处理字符串的开始和长度,然后替换掉这段区间。也可以替换数组。。
  mixed substr_replace ( mixed $string , mixed $replacement , mixed $start [, mixed $length ] )
举个例子:
3 $str = "test";
5 echo substr_replace($str, 'zzz', 1, 2);// tzzzt
7 $arr = array(
'a' =& 'what',
'b' =& 'are',
'c' =& array(
'ca' =& '11',
'cb' =& '22',
16 $arr1 = substr_replace($arr, 'ok', 0, 1);
18 $arr1 = array(
'a' =& 'okhat',
'b' =& 'okre',
'c' =& 'okarry'
数组替换的时候,也是处理一维数组的字符串值。。
preg_replace()的用法
正则这个就尼玛太强大了,主要用于匹配特定格式的时候,否则推荐直接使用str_replace()函数。
这就举个稍微简单的例子,一段话中间夹杂着一个手机号码(简单匹配,就是以1开头的11位数字,前后不能是数字),想要在手机号码前边加上( mobile: )字样。
$arr = array(
'a' =& 'XXXXXX',// 不是以1开头
'b' =& 'XXXXXX',
'c' =& 'XXXXXXXXX',
'd' =& 'XXXXXXXXX',
$re = preg_replace('/([^0-9])(1\d{10})([^0-9])/', '$1 mobile:$2 $3', $arr);// 利用$1,$3
$re1 = preg_replace('/(?&=[^0-9])(1\d{10})(?=[^0-9])/', ' mobile:$1 ', $arr);// 使用向前向后匹配,直接匹配的$1电话号
[a] =& XXXXXX
[b] =& XXX mobile: XXX
[c] =& XXXXXXXXX
[d] =& XXXXXXXXX
阅读(...) 评论()select * from table where ctime &= '[date-14]' and ctime &= '[date-1]';
想把上面这句sql的中括号表示的日期依次换成下面的数组中的元素
array('','');
用正则匹配:
找到第一个中括号部分,用第一个元素替换,然后找第二个,再替换
用sprintf函数:
因为日期已经计算好,按照顺序替换就可以了.
因为markdown写正则比较麻烦,这里就直接上图片了
ps:设想一下,如sql中只有一个需要替换的时间条件,就需要修改成
$sql = sprintf($sql,$arr[0])
说白了呢就是如果sprintf函数支持第二个参数是数组就太好了。查了一番之后确实可以有解决办法:
call_user_func_array() 官方的解释是:
call_user_func_array — 调用回调函数,并把一个数组参数作为回调函数的参数
mixed call_user_func_array ( callable $callback , array $param_arr )
把第一个参数作为回调函数(callback)调用,把参数数组作(param_arr)为回调函数的的参数传入。
也就是说:第一个参数是你想要使用的函数名(上文中的sprintf),第二个参数是将要使用函数的参数,只不过参数是以数组形式传给了call_user_func_array
ok,这样的话就可以实现动态的替换了
$param = $
array_unshift($param,$sql);
$sql = call_user_func_array('sprintf',$param);
阅读(...) 评论()PHP的substr_replace将指定两位置之间的字符替换为*号
字体:[ ] 类型:转载 时间:
PHP的substr_replace将指定两位置之间的字符替换为*号的代码,需要的朋友可以参考下。
代码如下:$username = "zongzi"; echo substr_replace($username,'**','1','2');
定义和用法
substr_replace() 函数把字符串的一部分替换为另一个字符串。
语法substr_replace(string,replacement,start,length)
必需。规定要检查的字符串。
replacement
必需。规定要插入的字符串。
必需。规定在字符串的何处开始替换。
正数 - 在第 start 个偏移量开始替换
负数 - 在从字符串结尾的第 start 个偏移量开始替换
0 - 在字符串中的第一个字符处开始替换
可选。规定要替换多少个字符。
正数 - 被替换的字符串长度
负数 - 从字符串末端开始的被替换字符数
0 - 插入而非替换
提示和注释
注释:如果 start 是负数且 length 小于等于 start,则 length 为 0。例子
代码如下: &?php echo substr_replace("Hello world","earth",6); ?&
输出: Hello earth
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 php字符串替换函数 的文章

 

随机推荐