この記事では主にPHPで1回だけまたはN回だけ置換する方法と、簡単な例を通してテーマを紹介します。お役に立てれば幸いです。
PHP では、Strtr、strreplace およびその他の関数を使用して置換できることは誰もが知っていますが、これらはすべて毎回置換されます。たとえば:
"abcabbc"、この文字列が上記の関数を使用して置換される場合。その中に b がある場合、それらはすべて置き換えられますが、1 つまたは 2 つだけを置き換えたい場合はどうすればよいでしょうか。以下の解決策を参照してください。
これはかなり興味深い質問で、以前に同様の処理を実行しました。 preg_replace を直接使用します。
mixed preg_replace (混合パターン、混合置換、混合主題 [, int limit] )
主題内でパターン pattern に一致するものを検索し、置換で置き換えます。 limit が指定されている場合は、limit の一致のみが置き換えられます。limit が省略されている場合、または値が -1 の場合は、すべての一致が置き換えられます。
preg_replace の 4 番目のパラメーターは置換の数を制限できるため、この方法でこの問題に対処すると非常に便利です。しかし、php.net で str_replace に関する関数のコメントを確認すると、実際に代表的な関数をいくつかピックアップすることができます。
方法 1: str_replace_once
アイデア まず、置換するキーワードの場所を見つけて、substr_replace 関数を使用して直接置換します。
<?php function str_replace_once($needle, $replace, $haystack) { // Looks for the first occurence of $needle in $haystack // and replaces it with $replace. $pos = strpos($haystack, $needle); if ($pos === false) { // Nothing found return $haystack; } return substr_replace($haystack, $replace, $pos, strlen($needle)); } ?>
方法 2、str_replace_limit
アイデア まだ preg_replace を使用していますが、そのパラメータは preg_replace に似ており、いくつかの特殊文字がエスケープされており、汎用性が向上しています。
<? function str_replace_limit($search, $replace, $subject, $limit=-1) { // constructing mask(s)... if (is_array($search)) { foreach ($search as $k=>$v) { $search[$k] = '`' . preg_quote($search[$k],'`') . '`'; } } else { $search = '`' . preg_quote($search,'`') . '`'; } // replacement return preg_replace($search, $replace, $subject, $limit); } ?>
関連する推奨事項:
php 文字列の正規置換関数 preg_replace の使用方法の詳細な説明
以上がphpテキスト置換指定回数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。