2010-12-01 12 views
5

Analizando una matriz de comandos de cadena, necesito saber si una cadena contiene una palabra clave específica.¿Cómo encontrar una palabra completa en una cadena en PHP sin coincidencias accidentales?

Sonidos simples Lo sé, pero el problema surge cuando la palabra clave de comando también puede ser parte de otra palabra.

Ex:

CHECKSOUND 
SOUND 
CHECK 

por eso es necesario comprobar si la línea actual tiene la CHECKSOUND, SONIDO o PASAR comando.

si uso algo como:

if(stristr($line,'SOUND') == true) 

Entonces se puede encontrar CHECKSOUND antes SOUND y por lo tanto no analiza correctamente.

Pregunta:

¿Hay una manera de encontrar solamente una ocurrencia de una palabra completa como el sonido e ignorar el SONIDO ocurrencia si se encuentra como parte de otra palabra como CHECKSOUND?

Estoy seguro de que me falta algo simple aquí.

Respuesta

19

Puede usar una expresión regular para alcanzar fácilmente el objetivo.

Ejemplo # 2 de la documentación de preg_match:

/* The \b in the pattern indicates a word boundary, so only the distinct 
* word "web" is matched, and not a word partial like "webbing" or "cobweb" */ 
if (preg_match("/\bweb\b/i", "PHP is the web scripting language of choice.")) { 
    echo "A match was found."; 
} else { 
    echo "A match was not found."; 
} 

Tenga en cuenta que el ejemplo anterior utiliza el modificador de i, que hace que la búsqueda para el caso del "web" insensible.

+0

Excelente ayuda, gracias. –

Cuestiones relacionadas