php获取字符串第n次出现,php替换字符串中第N次出现的字符代码

下面我总结了关于在php开发中一些字符替换方法,包括不用正则直接替换或使用正则替换字符以及利用php自带函数进行替换.

比如有一个字符串:$a=’hello world hello pig hello cat hello dog hello small boy’;

然后想将第3次出现的hello 改变成为good-bye,比如:

‘hello world hello pig good-bye cat hello dog hello small boy’;

这样的情况,我一时半会没找到PHP的内置函数,而且在要求不能使用正则表达式的情况下,就编写了这个简易的小函数,如果大家有好的内置函数推荐,欢迎留言:)

实例代码如下:/*

* $text是输入的文本;

* $word是原来的字符串;

* $cword是需要替换成为的字符串;

* $pos是指$word在$text中第N次出现的位置,从1开始算起

*

*/

function changeNstr($text,$word,$cword,$pos=1){

$text_array=explode($word,$text);

$num=count($text_array)-1;

if($pos>$num){

return "the number is too big!or can not find the $word";

}

$result_str='';

for($i=0;$i<=$num;$i++){

if($i==$pos-1){

$result_str.=$text_array[$i].$cword;

}else{

$result_str.=$text_array[$i].$word;

}

}

return rtrim($result_str,$word);

}

$text='hello world hello pig hello cat hello dog hello small boy';

$word='hello';

$cword='good-bye';

echo changeNstr($text,$word,$cword,3);

//输出:hello world hello pig good-bye cat hello dog hello small boy

?>

正则会更方法

如果是utf-8编码的话

实例代码如下:$regex = "/(,|,||||)/i";

$test = "河北,石家庄,北京,上海|天津|||重庆|保定,,,河南, ";

$result = preg_replace($regex," ",$test);

print_r($result);

?>

结果

河北 石家庄 北京 上海 天津 重庆 保定 河南

php函数替换

PHP常用正则匹配函数间的区别,主要有str_replace、str_ireplace、substr_replace、preg_replace、preg_match、preg_match_all、preg_quote、preg_split、ereg_replace、eregi_replace、preg_replace、str_split,当然其中有几个不能使用正则表达式,但因为跟相关正则函数关系暧昧所以都放到一起比较一下

支持正则

特点

备注

str_replace

X

字符串替换函数,大小写敏感

str_ireplace

X

字符串替换函数,大小写不敏感,支持数组式批量替换

感谢网友franci,提醒添加

substr_replace

X

部分替换字符串函数,可以指定位置index

preg_replace

Y

指定匹配模式进行替换,支持子串引用

优先使用

ereg_replace

Y

指定匹配模式进行替换,大小写敏感,支持子串引用

eregi_replace

Y

指定匹配模式进行替换,大小写不敏感,支持子串引用

ereg

Y

指定模式全文匹配,可以用来匹配判断,或返回匹配数组

preg_match

Y

指定模式匹配一次退出,可以用来是否匹配判断,或使用返回的匹配数组

优先使用

preg_match_all

Y

指定模式全文匹配,一般用来使用返回的匹配数组

优先使用

preg_split

Y

指定匹配模式下正则剖分,如果能用最好还是使用explode或str_split

str_split

X

指定长度剖分字符串,默认单个字符剖分成数组

explode

X

可以指定单个或多个字符剖分字符串,成功则返回数组,例如12345按照34剖分则返回12和5

preg_quote

-

转义正则表达式字符,意思就是为特殊字符加上反斜线,正则表达式的特殊字符包括:. + * ? [ ^ ] $ ( ) { } = ! < > | : -

本文地址:

转载随意,但请附上文章地址:-)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值