私はPHPを使用して完全な単語を置き換えたいです
例:私が持っている場合
$text = "Hello hellol hello, Helloz";
そして私は使用します
$newtext = str_replace("Hello",'NEW',$text);
新しいテキストは次のようになります
NEW hello1こんにちは、Helloz
PHPが返す
NEW hello1 hello、NEWz
ありがとう。
正規表現を使用します。 \b
は、Wordの境界に一致します。
$text = preg_replace('/\bHello\b/', 'NEW', $text);
$text
はUTF-8テキストを含むため、Unicode修飾子 "u"を追加する必要があります。これにより、非ラテン文字がWordの境界と誤解されないようになります。
$text = preg_replace('/\bHello\b/u', 'NEW', $text);
これに置き換えられた文字列内の複数の単語
$String = 'Team Members are committed to delivering quality service for all buyers and sellers.';
echo $String;
echo "<br>";
$String = preg_replace(array('/\bTeam\b/','/\bfor\b/','/\ball\b/'),array('Our','to','both'),$String);
echo $String;
Array置換リスト:置換文字列が相互に置換する場合、 _preg_replace_callback
_ が必要です。
_$pairs = ["one"=>"two", "two"=>"three", "three"=>"one"];
$r = preg_replace_callback(
"/\w+/", # only match whole words
function($m) use ($pairs) {
if (isset($pairs[$m[0]])) { # optional: strtolower
return $pairs[$m[0]];
}
else {
return $m[0]; # keep unreplaced
}
},
$source
);
_
明らかに/効率のために_/\w+/
_はキーリスト/\b(one|two|three)\b/i
に置き換えることができます。
また、 T-Regx libraryを使用して、$
または\
置換中の文字
<?php
$text = pattern('\bHello\b')->replace($text)->all()->with('NEW');