Home  >  Article  >  Backend Development  >  PHP replaces the Nth occurrence of character code in a string_PHP tutorial

PHP replaces the Nth occurrence of character code in a string_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 17:14:041156browse

Below I have summarized some character replacement methods in PHP development, including direct replacement without regular expressions, using regular expressions to replace characters, and using PHP's own functions for replacement.

For example, there is a string: $a=’hello world hello pig hello cat hello dog hello small boy’;
Then I want to change the hello that appears for the third time to good-bye, for example:
‘hello world hello pig good-bye cat hello dog hello small boy’;
In this case, I couldn't find PHP's built-in function for a while, and I wrote this simple little function under the requirement that regular expressions cannot be used. If you have any recommendations for good built-in functions, please leave a message:)

The code is as follows Copy code
 代码如下 复制代码

/*
* $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
?> 

/*

* $text is the input text;

* $word is the original string;
* $cword is the string that needs to be replaced;

* $pos refers to the position where $word appears for the Nth time in $text, starting from 1
代码如下 复制代码

$regex = "/(,|,||||)/i";
$test = "河北,石家庄,北京,上海|天津|||重庆|保定,,,河南, ";
$result = preg_replace($regex," ",$test);
print_r($result);
?>

* */ 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); <🎜> //Output: hello world hello pig good-bye cat hello dog hello small boy <🎜> ?> Regular rules will be updated If it is utf-8 encoding
The code is as follows Copy code
$regex = "/(,|,||||)/i";<🎜> $test = "Hebei, Shijiazhuang, Beijing, Shanghai | Tianjin | Chongqing | Baoding,,, Henan, ";<🎜> $result = preg_replace($regex," ",$test);<🎜> print_r($result);<🎜> ?>


Result
Hebei Shijiazhuang Beijing Shanghai Tianjin Chongqing Baoding Henan

php function replacement

The differences between commonly used regular matching functions in PHP mainly include 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. Of course, some of them cannot use regular expressions, but Because the relationship with related regular functions is ambiguous, I put them all together for comparison

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

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/629041.htmlTechArticle Below I summarize some character replacement methods in PHP development, including direct replacement without regular expressions or replacement of characters with regular expressions And use PHP's own functions for replacement. For example, there is a word...
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