-
come faccio a verificare se una stringa contiene una parola inserita in una seconda variabile?
se io faccio:
if ($testo == $parola) {
mi verifica solo l'uguaglianza perfetta.
se io uso una sintassi tipo quella che uso per le verifiche sui campi delle tabelle:
if ("".$testo." == '%".$parola."%'") {
mi da sempre vera la condizione anche quando sicuramente non lo è.
c'è un modo per le stringhe? so fare questo tipo di verifica con i campi delle tabelle, ma su due semplici stringhe non ci riesco ... why? c'è una sintassi diversa?
grazie
Richi
-
Puoi usare: strstr($testo,$parola_da_verificare)
Questa funzione restituisce la stringa dalla parola compresa in poi (che viene trattata come TRUE da un if) o FALSE se non trova niente,
Quindi ti basta fare if (strstr($testo,$parola)) ...
-
ok funziona !! grazie mille della dritta !!
Richi
-
Ti do pure un'altra dritta, strstr è case sensitive, ti conviene usare stristr nella stessa modalità insomma inserisci solo una i nel nome della funzione :mrgreen:
-
strstr o stristr funzionano però mi sono accorto che la condizione risulta vera anche per porzioni di parole ... per cui la if è verificata anche quando trova "zio" in una frase tipo "questa è una funzione php" mentre io vorrei che venisse verificata solo se trova la parola "zio" ad esempio in "lo zio va a casa". Secondo voi come posso fare?
-
Potresti cercare, anzichè la stringa "zio", la stringa " zio " (<- nota gli spazi) :o
-
x questo genere di applicazioni l'ideale è sfruttare quel "poco" di espressioni regolari che il perl ha tramandato al php...
tutto spiegato in questa ottima guida:
http://www.myphp.it/site/articoli,print,3,1.html
-
Conosco poco le espressioni regolari. Ritieni che anche in un caso semplice del genere possano giovare? A titolo di esempio, quale sarebbe la stringa di ricerca da scrivere nel nostro caso per usare ereg() :?:
-
per quanto dice bodo ... uummm potrebbe andare magari cercando due alternative: "zio " oppure " zio" invece che " zio " in modo che, se la parola è all'inizio o alla fine della frase, la trova comunque (mentre con il doppio spazio non la troverebbe).
per le espressioni regolari ... adesso vado a vedermi la guida consigliata dal buon Evcz
Alohaaa
Richi
-
prova così:
[code:1:efe5fc6906]$esito = preg_match ("/(\b$parola_da_cercare\b)/i",$testo);[/code:1:efe5fc6906]
-