PHP では、Strtr、strreplace およびその他の関数を使用して置換できることは誰もが知っていますが、それらは毎回すべて置換されます。たとえば、
"abcabbc"、この文字列が上記の関数で置換される場合、そのうちの b を選択すると、すべて置換されますが、1 つまたは 2 つだけを置換したい場合はどうすればよいでしょうか。以下の解決策を参照してください。
これはかなり興味深い質問で、以前に同様の処理を実行したことがあります。その時のpreg_replace。
mixed preg_replace (mixed pattern,mixed replace,mixed subject [, int limit])
subject 内のパターン pattern に一致するものを検索し、置換で置き換えます。 limit が指定されている場合は、limit の一致のみが置き換えられます。limit が省略されている場合、または値が -1 の場合は、すべての一致が置き換えられます。
preg_replace の 4 番目のパラメーターは置換の数を制限できるため、この方法でこの問題に対処すると非常に便利です。しかし、php.net で str_replace に関する関数のコメントを確認すると、実際に代表的な関数をいくつかピックアップすることができます。
str_replace_once
このアイデアは、まず置換するキーワードの場所を見つけてから、substr_replace 関数を使用して直接置換することです。
// $haystack 内で最初に出現する $needle を探します
// そしてそれを $replace に置き換えます。
$pos = strpos($haystack, $needle);if ($pos === false) {
$haystack を返す
}
return substr_replace($haystack, $replace, $pos, strlen($needle));
}?>
str_replace_limit
コードをコピーします
if (is_array($search)) {
foreach ($search as $k=>$v) {
$search[$k] = '' .preg_quote($search[$k],'') '';
}
}
その他 {
$search = '' .preg_quote($search,'') '';
}//交換
return preg_replace($search, $replace, $subject, $limit);
}
?>
http://www.bkjia.com/PHPjc/326666.html
true