2012-02-02 17 views
20

In SQL abbiamo NOT LIKE %string%Verifica se una stringa contiene una parola in PHP?

ho bisogno di farlo in PHP.

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

Penso che può essere fatto con strpos()

ma couldnt capire come ..

ho bisogno esattamente quella frase comparission in PHP valido.

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

Grazie

+0

ho aggiornato il titolo per riflettere meglio la domanda. Dovrebbe essere anche esposta la semantica esatta della corrispondenza delle parole. Potrebbe essere meglio usare '\ bword \ b' o' \ bword | word \ b' in determinate situazioni. –

+0

possibile duplicato di [Verificare se la stringa contiene parole specifiche?] (Http://stackoverflow.com/questions/4366730/check-if-string-taintain-specific-words) – Jeroen

risposta

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

noti che strpos() tra maiuscole e minuscole, se si desidera una ricerca case-insensitive, utilizzare stripos() invece.

Si noti inoltre lo ===, forzando un rigoroso test di uguaglianza. strpos PU CAN restituire un valore valido 0 se la stringa "ago" si trova all'inizio del "pagliaio". Forzando un assegno per un falso booleano effettivo (ovvero 0), si elimina quel falso positivo.

+0

nota che% word% è un carattere jolly, non un variabile ... la stringa $ contiene un indirizzo IP in formato char, come $ stringa = 123.456.789.100, e voglio escludere (NON MI PIACE) quelli che iniziano con 123.456% –

+0

@LucasMatos Quindi '$ word =" parola "' poi ... mentre è un jolly, è un uso molto banale ("floating end") che 'strpos' copre (e infatti è * perché * di ciò che' strpos' lavora qui!). '$ word =" a? b "' non funzionerebbe con questo approccio, se '?' voleva dire "abbinare qualsiasi carattere", ad esempio –

+2

@LUcas: avrebbe dovuto dirlo nella domanda, quindi. Esempi semplici ottengono risposte semplici. –

16

Utilizzare strpos. Se la stringa non viene trovata restituisce false, altrimenti qualcosa che non è false. Assicurarsi di utilizzare un confronto type-safe (===) come 0 possono essere restituiti ed è un valore 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

Questo fallirà se $ searchStr è all'inizio di $ mixedStr. In questo esempio, se cerchi "ciao", echo "String not here", perché lo strpos restituirà 0, che si diramerà nella condizione else. Utilizzare sempre === quando si controlla il valore di ritorno di strpos. –

0

use 
 

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

+1

È uguale alla risposta precedente !!! –

+0

@RohitGupta No, ha un esempio di frammento di codice. – a20

Problemi correlati