2010-09-17 7 views
2

Je pense que c'est une regex dont j'ai besoin.rechercher une chaîne pour un mot spécifique et le remplacer

J'ai une saisie de texte où les utilisateurs peuvent rechercher sur mon site Web. Ils peuvent utiliser le mot "ELLER" entre les expressions de recherche, ce qui est en anglais égal à "OR".

Mon moteur de recherche nécessite cependant en anglais, donc je dois remplacer tous ELLER dans la chaîne de requête avec OU à la place.

Comment est-ce que je peux faire ceci?

BTW, il est php ...

Merci

Répondre

3
str_replace("ELLER", "OR", $string); 

http://php.net/manual/de/function.str-replace.php

+0

Je suis d'accord, l'utilisation str_replace. C'est beaucoup plus rapide que d'utiliser une regex. –

+4

comme ceci mais utiliser les chaînes '" ELLER "' et '" OR "' (espaces de note) – Segfault

+0

Avis de Heed Segfault, sinon une recherche de "Helen Keller" ou "Uri Geller" ne fonctionnera pas comme prévu –

5

Si vous avez un mot spécifique que vous voulez remplacer, il n'y a pas besoin de regex, vous pouvez utiliser str_replace à la place:

$string = str_replace("ELLER", "OR", $string); 

Quand ce que vous êtes regard Ce n'est pas dynamique, l'utilisation des fonctions de chaîne de PHP sera plus rapide que l'utilisation d'expressions régulières.

Si vous voulez vous assurer que ELLER est seulement remplacé quand il est un match mot complet, et non contenu dans un autre mot, vous pouvez utiliser preg_replace et l'ancre word boundary (\b):

$string = preg_replace('/\bELLER\b/', 'OR', $string); 
0

Si Notez aussi que vous pouvez aussi str_replace passer un tableau de valeurs à changer et un tableau de valeurs pour changer telles que:

str_replace(array('item 1', 'item 2'), 'items', $string);

ou

str_replace(array('item 1', 'item 2'), array('1 item', '2 item'), $string);

Questions connexes