Ich möchte nur komplette Wörter mit PHP ersetzen
Beispiel: .__ Wenn ich
$text = "Hello hellol hello, Helloz";
und ich benutze
$newtext = str_replace("Hello",'NEW',$text);
Der neue Text sollte so aussehen
NEU hallo1 hallo Helloz
PHP kehrt zurück
NEU Hallo1 Hallo, NEWz
Vielen Dank.
Sie möchten reguläre Ausdrücke verwenden. Der \b
stimmt mit einer Word-Grenze überein.
$text = preg_replace('/\bHello\b/', 'NEW', $text);
Wenn $text
UTF-8-Text enthält, müssen Sie den Unicode-Modifikator "u" hinzufügen, damit nicht lateinische Zeichen nicht als Word-Grenzen falsch interpretiert werden:
$text = preg_replace('/\bHello\b/u', 'NEW', $text);
mehrere Wörter im String werden durch diese ersetzt
$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 - Ersetzungsliste: Wenn sich die Ersetzungszeichenfolgen gegenseitig ersetzen, benötigen Sie 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
);
Aus Gründen der Effizienz könnte /\w+/
durch eine Schlüsselliste /\b(one|two|three)\b/i
ersetzt werden.
Sie können auch T-Regx library verwenden, die beim Ersetzen $
- oder \
-Zeichen zitiert
<?php
$text = pattern('\bHello\b')->replace($text)->all()->with('NEW');