Heim >Backend-Entwicklung >PHP-Tutorial >替换字符串中第N次出现的字符,不用正则表达式

替换字符串中第N次出现的字符,不用正则表达式

WBOY
WBOYOriginal
2016-07-25 09:02:321401Durchsuche
比如有一个字符串:$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的内置函数,而且在要求不能使用正则表达式的情况下,就编写了这个简易的小函数,如果大家有好的内置函数推荐,欢迎留言:)
转自PHP面试题: http://phpmst.com/
  1. /*
  2. * $text是输入的文本;
  3. * $word是原来的字符串;
  4. * $cword是需要替换成为的字符串;
  5. * $pos是指$word在$text中第N次出现的位置,从1开始算起
  6. * */
  7. function changeNstr($text,$word,$cword,$pos=1){
  8. $text_array=explode($word,$text);
  9. $num=count($text_array)-1;
  10. if($pos>$num){
  11. return "the number is too big!or can not find the $word";
  12. }
  13. $result_str='';
  14. for($i=0;$i if($i==$pos-1){
  15. $result_str.=$text_array[$i].$cword;
  16. }else{
  17. $result_str.=$text_array[$i].$word;}
  18. }
  19. return rtrim($result_str,$word);
  20. }
  21. $text='hello world hello pig hello cat hello dog hello small boy';
  22. $word='hello';
  23. $cword='good-bye';
  24. echo changeNstr($text,$word,$cword,3);
  25. //输出:hello world hello pig good-bye cat hello dog hello small boy
  26. ?>
复制代码


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn