2012-03-13 58 views
8

Quiero probar una cadena para ver que contiene ciertas palabras.preg_match para varias palabras

es decir:

$string = "The rain in spain is certain as the dry on the plain is over and it is not clear"; 
preg_match('`\brain\b`',$string); 

Pero ese método sólo coincide con una palabra. ¿Cómo verifico si hay varias palabras?

+3

preg_match_all() –

+0

véase la cuestión editado – Autolycus

Respuesta

15

Algo así como:

preg_match_all('#\b(rain|dry|clear)\b#', $string, $matches); 
+0

# \ s no – Autolycus

+0

@Autolycus que se va a añadir un espacio '\ s' alrededor de las palabras, pero luego noté que ya usaste un límite de palabras '\ b'. – jeroen

+0

@Autolycus El '#' al principio y al final marcan el comienzo y el final de la expresión regular y son necesarios (ese o cualquier otro carácter) para que pueda agregar interruptores al final, como '# i' para la coincidencia insensible a mayúsculas y minúsculas. – jeroen

2
preg_match('\brain\b',$string, $matches); 
var_dump($matches); 
+0

delimitadores que faltan, y no vuelve más de un valor –

+0

vea la pregunta ¿qué editado – Autolycus

3
preg_match('~\b(rain|dry|certain|clear)\b~i',$string); 

Puede utilizar el carácter de barra vertical (|) como una "o" en una expresión regular.

Si solo necesita saber si alguna de las palabras está presente, use preg_match como se indica anteriormente. Si usted necesita para que coincida con todas las ocurrencias de cualquiera de las palabras, usar preg_match_all:

preg_match_all('~\b(rain|dry|certain|clear)\b~i', $string, $matches); 

A continuación, compruebe la variable $matches.

Cuestiones relacionadas