ホームページ  >  記事  >  バックエンド開発  >  正規表現を使用せずに、文字列内の N 番目に出現する文字を置換します。

正規表現を使用せずに、文字列内の N 番目に出現する文字を置換します。

WBOY
WBOYオリジナル
2016-07-25 09:02:321341ブラウズ
たとえば、次のような文字列があります。 $a='hello world hello pig hello cat hello Dog hello small boy';
次に、3 回目に表示される hello を Goodbye に変更したいと思います。例:
「こんにちは、世界、こんにちは、豚、さようなら、猫、こんにちは、犬、こんにちは、小さな男の子」;
この場合、しばらくの間 PHP の組み込み関数が見つからなかったので、正規表現が使用できないという条件でこの単純な関数を作成しました。良い組み込み関数に関する推奨事項があれば、残してください。メッセージ:)
PHP インタビューの質問からの転載: http://phpmst.com/
    /*
  1. * $text は入力テキストです。
  2. * $word は置換する必要がある文字列です
  3. * $pos は $word を指します。 1 から始まる $text 内の N 番目の出現位置
  4. * */
  5. function changeNstr($text,$word,$cword,$pos=1){
  6. $text_array=explode($word,$text );
  7. $num=count($text_array)-1;
  8. if($pos>$num){
  9. return "数値が大きすぎます! または $word が見つかりません";
  10. }
  11. $result_str='' ;
  12. for ($i=0;$i if($i==$pos-1){
  13. $result_str.=$text_array[$i].$cword;
  14. } else{
  15. $result_str.=$text_array[$i].$word;}
  16. }
  17. return rtrim($result_str,$word);
  18. }
  19. $text='こんにちは、世界、こんにちは、豚、こんにちは、猫、こんにちは、犬、こんにちは、小さな男の子';
  20. $word='hello';
  21. $cword='good-bye';
  22. echochangeNstr($text,$word,$cword,3);
  23. //出力: hello world hello pig Good-bye cat hello pig hello小さな男の子
  24. ?>
コードをコピー
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。