PHP chaîne remplacer match mot entier
Je voudrais remplacer juste des mots complets en utilisant php
Exemple : Si j'ai
$text = "Hello hellol hello, Helloz";
Et j'utilise
$newtext = str_replace("Hello",'NEW',$text);
Le nouveau texte devrait ressembler
Nouveau hello1 bonjour, Helloz
PHP renvoie
New hello1 bonjour, NEWz
Merci.
27
demandé sur
NVG
2010-08-06 21:37:38
3 réponses
Vous souhaitez utiliser des expressions régulières. Le \b
correspond à une limite de mot.
$text = preg_replace('/\bHello\b/', 'NEW', $text);
Si $text
contient du texte UTF-8, vous devrez ajouter le modificateur Unicode "u", afin que les caractères non latins ne soient pas mal interprétés comme des limites de mots:
$text = preg_replace('/\bHello\b/u', 'NEW', $text);
54
répondu
Lethargy
2010-09-05 07:37:48
Plusieurs mots dans la chaîne remplacé par ce
$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;
4
répondu
sandeep kumar
2017-04-04 08:30:39
Array liste de remplacement: dans le cas où vos chaînes de remplacement se substituent, vous avez besoin de 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
);
Évidemment / pour l'efficacité /\w+/
pourrait être remplacé par une liste de clés /\b(one|two|three)\b/i
.
1
répondu
mario
2017-11-23 23:49:28