Yoyo@ | Salut,
Je cherche, en PHP, à remplacer la première occurrence d'un mot par un autre mot. De plus, je souhaite que le mot en question ne soit remplac é que si c'est un mot à part entière, et non pas une partie d'un mot.
La première implémentation m'étant venue à l'esprit fut donc:
Code :
- function replaceWholeWordOnce($search, $replace, $subject){
- return preg_replace("/^(.*?)\b" . $search . "\b(.*)$/", "$1$replace$2", $subject);
- }
|
Cependant, je me suis vite rendu compte que si ^search contenait un caractère spécial au vu des RegEx du genre '(', alors, ça ne marchait pas.
Est ce à dire que je dois échapper, dans $search, chacun de ces caractères spéciaux, et donc avoir une implémentation de la forme:
Code :
- function replaceWholeWordOnce($search, $replace, $subject){
- $search=str_replace(array('\\', '/', '^', '.', '[', ']', '|', '(', ')', '?', '*', '+', '{', '}'), array('\\\\', '\\/', '\\^', '\\.', '\\[', '\\]', '\\|', '\\(', '\\)', '\\?', '\\*', '\\+', '\\{', '\\}'), $search);
- return preg_replace("/^(.*?)\b" . $search . "\b(.*)$/", "$1$replace$2", $subject);
- }
|
Ca me paraît bien lourd quand même.
Est ce qu'il n'y aurait pas un moyen raccourci (et accessoirement plus fiable) de faire ça?
Merci.
|