Home  >  Article  >  php教程  >  php 替换字符串中第N次出现的字符代码

php 替换字符串中第N次出现的字符代码

WBOY
WBOYOriginal
2016-05-25 16:47:141199browse

下面我总结了关于在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  

正则会更方法

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


本文地址:

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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn