Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    6,034

    Cercare una parola in una stringa

    data una stringa (una frase o anche una variabile inviata via $_POST) devo verificare se contiene una serie di parole: ho visto un esempio:
    Codice PHP:
    $parola = array('word1''word_due''wordtre');
    $stringa $_POST['note'];
    foreach(
    $parola as $cerca) {
           if((
    $pos strpos($stringa$cerca)) != false) {
           
    //stampo
           
    } else {
           
    //altra cosa
           
    }

    riconosce sempre l'ultima parola contenuta nell'array e cioè "wordtre"
    Dove è sbagliato?

  2. #2
    innanzitutto prova ad usare stripos() che è case insensitive...

    in secondo luogo.. sembra giusto.. prova a debuggare stampando, al'inizio del ciclo, la stringa e la parola cercata.. così vedi se ad ogni iterazione sono quelle che ti aspetti


  3. #3
    if((strpos($stringa, $cerca)) !== false) {
    Addio Aldo, amico mio... [03/12/70 - 16/08/03]

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    6,034
    eccomi.
    se uso stripos(), che era anche meglio, ottengo un
    Fatal error: Call to undefined function: stripos()

    Poi stampando sia $stringa che $cerca visualizzo, rispettivamente, le tre parole inserite nell'array e il valore immesso nel campo note.

    Quindi se scrivo l'ultima prola contenuta nell'array mostra giustamente il msg di errore, altrimenti manda l'email, anche se scrivo una delle prime parole

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    6,034
    già, perchè stripos sta solo per php5
    Quindi userei stristr() che però dà lo stesso risultato: riconosce solo l'ultima parola dell'array

  6. #6
    [supersaibal]Originariamente inviato da meganoide
    già, perchè stripos sta solo per php5
    [/supersaibal]
    ops.. mea culpa...

    vabbè.. basta fare un lowercase ad entra,e i membri per avere un confronto sicuro

    riguardo all'errore sembra illogico...
    debugga come ti dicevo: stampati le variabili nei punti caldi per vedere cosa contengono..

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    6,034
    le variabili sarebbero anche giuste.
    Questo il codice:
    Codice PHP:
    $parole = array('parolauno''paroladue''parolatre');
    $stringa $_POST['commenti'];
    foreach(
    $parole as $cerca) {

    echo 
    "Stringa= $stringa
    "
    ;
    echo 
    "Cerca= $cerca
    "
    ;

             if((
    stristr($stringa$cerca)) !== FALSE) {

           
    $paroleyes 0;
                echo 
    "
    [b]trovata una parola dell'array[/b]
    "
    ;
                
           } else {
           
    $paroleyes 1;
           }

    e questa e la pagina in azione: http://www.spacemarc.it/test/mail.php

  8. #8
    Stringa= parolauno paroladue buh parolatre
    Cerca= parolauno

    trovata una parola dell'array
    Stringa= parolauno paroladue buh parolatre
    Cerca= paroladue

    trovata una parola dell'array
    Stringa= parolauno paroladue buh parolatre
    Cerca= parolatre

    trovata una parola dell'array
    potresti anche stampare la parola trovata.... èer controllare mwglio.. ma sembra andare...


  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    6,034
    intendi stampare $parole? in ogni caso, come hai visto, si ferma (non manda l'email) solo se trova l'ultima parola, quando invece dovrebbe farlo anche se trova le altre

  10. #10
    questo non dipende dal foreach ma dall'if che fai dopo e dalla flag
    $paroleyes = 0;
    else
    $paroleyes = 1;
    perchè ogni ciclo cambia il valore della var, quindi ogni volta che non trova la parola, l'else la fa tornare a 1.

    ti conviene mettere
    Codice PHP:
    $parole = array('parolauno''paroladue''parolatre');
    $stringa $_POST['commenti'];
    $trovate 0;
    foreach(
    $parole as $cerca) {
           if((
    stristr($stringa$cerca)) !== FALSE) {
                echo 
    "
    [b]trovata la parola 
    $cerca![/b]
    "
    ;            
                
    $trovate += 1//<<- qui il +=
           

    }
    // e poi fare
    if ($trovate == 0)  //manda email
    //oppure
    if ($trovate 0//non mandare 
    capito?
    ciao
    :gren: (-: SMiLe!!! ;-) :gren:
    In Google We Trust

    "corri, il futuro non ti aspetta!" -- SMiLe(2004)
    ex-banned

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.