2012-02-02 21 views
20

En SQL tenemos NOT LIKE %string%¿Prueba si una cadena contiene una palabra en PHP?

tengo que hacer esto en PHP.

if ($string NOT LIKE %word%) { do something }

Creo que se puede hacer con strpos()

pero couldnt encontrar la manera ..

necesito exactamente esa frase Comparacion en PHP válida.

if ($string NOT LIKE %word%) { do something }

Gracias

+0

He actualizado el título para reflejar mejor la pregunta. La semántica exacta del emparejamiento de palabras también debe establecerse. Puede ser mejor usar '\ bword \ b' o' \ bword | word \ b' en ciertas situaciones. –

+0

posible duplicado de [Comprobar si la cadena contiene palabras específicas?] (Http://stackoverflow.com/questions/4366730/check-if-string-contains-specific-words) – Jeroen

Respuesta

47
if (strpos($string, $word) === FALSE) { 
    ... not found ... 
} 

Tenga en cuenta que strpos() mayúsculas y minúsculas, si desea realizar una búsqueda sensible a las mayúsculas, utilice stripos() lugar.

También tenga en cuenta el ===, forzando una estricta prueba de igualdad. strpos PUEDE devolver un 0 válido si la cadena 'aguja' está al comienzo del 'pajar'. Al forzar un cheque para un verdadero booleano falso (aka 0), eliminas ese falso positivo.

+0

tenga en cuenta que% word% es un comodín, no un variable ... la $ string contiene una dirección IP en forma de char, como $ string = 123.456.789.100, y quiero excluir (NOT LIKE) las que comienzan con 123.456% –

+0

@LucasMatos Then '$ word =" word "' entonces ... mientras es un comodín, es un uso muy trivial ("extremos flotantes") que cubre strpos (y de hecho es * porque * de esto que 'strpos' funciona aquí!). '$ word =" a? b "' no funcionaría con este enfoque, si '?' intentaba "emparejar cualquier carácter", por ejemplo –

+2

@LUcas: debería haberlo dicho en la pregunta, entonces. Los ejemplos simples obtienen respuestas simples. –

16

Use strpos. Si no se encuentra la cadena, devuelve false, de lo contrario, algo que no sea false. Asegúrese de usar una comparación de tipo seguro (===) como 0 pueden ser devueltos y es un valor Falsy:

if (strpos($string, $substring) === false) { 
    // substring is not found in string 
} 

if (strpos($string, $substring2) !== false) { 
    // substring2 is found in string 
} 
1
<?php 
// Use this function and Pass Mixed string and what you want to search in mixed string. 
// For Example : 
    $mixedStr = "hello world. This is john duvey"; 
    $searchStr= "john"; 

    if(strpos($mixedStr,$searchStr)) { 
     echo "Your string here"; 
    }else { 
     echo "String not here"; 
    } 
+0

Esto fallará si $ searchStr está en el comienzo de $ mixedStr. En ese ejemplo, si busca "hola", repetirá "Cadena no aquí", porque strpos devolverá 0, que se ramificará en la condición else. Siempre use === cuando verifique el valor de retorno de strpos. –

0

use 
 

 
if(stripos($str,'job')){ 
 
    // do your work 
 
}

+1

¡Es lo mismo que la respuesta anterior! –

+0

@RohitGupta No tiene una muestra de fragmento de código. – a20

Cuestiones relacionadas