ホームページ  >  記事  >  バックエンド開発  >  文字列を 1 回だけ置換する str_replace メソッド_PHP チュートリアル

文字列を 1 回だけ置換する str_replace メソッド_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:12:25899ブラウズ

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 関数を使用して直接置換することです。

コードをコピーします コードは次のとおりです:

関数 str_replace_once($needle, $replace, $haystack) {

// $haystack 内で最初に出現する $needle を探します

// そしてそれを $replace に置き換えます。

$pos = strpos($haystack, $needle);

if ($pos === false) {

$haystack を返す

}

return substr_replace($haystack, $replace, $pos, strlen($needle));

}

?>


str_replace_limit

まだ preg_replace を使用していますが、そのパラメーターは preg_replace に似ており、一部の特殊文字がエスケープされ、より汎用性が高くなります。



コードをコピーします

コードは次のとおりです:
関数 str_replace_limit($search, $replace, $subject, $limit=-1) {
// マスクを構築中...

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

www.bkjia.com

tru​​e

技術記事 PHP では、Strtr、strreplace およびその他の関数を置換に使用できることは誰もが知っていますが、これらはすべて毎回置換されます。たとえば、この文字列が上記を使用している場合...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。