Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [PHP] strstr(), non funziona sempre?

    Ciao a tutti.

    Sto usando la funzione strstr(), ma non funziona sempre. Mi spigo meglio.

    $prova = "casa";
    $prova2 = "casa";

    if(strstr(prova2,prova)) echo "ok";
    else echo "non funziona";

    cosi non ci sono problemi, mentre se inserisco il tutto in un ciclo:

    $prova = array("auto","finestra","sedia","casa");
    $prova2 = "casa";

    while(next($prova))
    {
    if(strstr(prova2,prova)) echo "ok";
    else echo "non funziona";
    }

    Non funziona, mi potete aiutare?
    Ciao e grazie.
    Se la felicità è dietro l'angolo allora la mia vita è un cerchio. (Mario Muraro)

  2. #2
    Ma la mancanza del simbolo del dollaro qui

    strstr(prova2,prova)

    è un errore di battitura o dello script ?
    Addio Aldo, amico mio... [03/12/70 - 16/08/03]

  3. #3
    [supersaibal]Originariamente inviato da gm
    Ma la mancanza del simbolo del dollaro qui

    strstr(prova2,prova)

    è un errore di battitura o dello script ? [/supersaibal]
    Non mi ricordo bene... se next muove il puntatore ed estrae il dato o viceversa... in ogni caso il dato che estrae dove lo mette???

    :master:

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    [supersaibal]Originariamente inviato da gm
    Ma la mancanza del simbolo del dollaro qui

    strstr(prova2,prova)

    è un errore di battitura o dello script ? [/supersaibal]
    E' un errore di battiutra.
    Se la felicità è dietro l'angolo allora la mia vita è un cerchio. (Mario Muraro)

  5. #5
    [supersaibal]Originariamente inviato da piero.mac
    Non mi ricordo bene... se next muove il puntatore ed estrae il dato o viceversa... in ogni caso il dato che estrae dove lo mette???

    :master: [/supersaibal]
    Ho provato anche ad inserire una variabile d'appoggio nel ciclo

    $prova = array("auto","finestra","sedia","casa");
    $prova2 = "casa";

    while(next($prova))
    {
    $temp = current($prova);

    if(strstr($prova2,$temp)) echo "ok";
    else echo "non funziona";
    }

    ma non fa niente.

    ho anche stampatoa video la variabile $temp, durante l'esecuzione del ciclo, e mi stampa i valori che si trovano nell'array, ma la funzione strstr() non la vede proprio.
    non capisco perchè.
    Se la felicità è dietro l'angolo allora la mia vita è un cerchio. (Mario Muraro)

  6. #6
    while($pippo = next($prova))
    {
    if(strstr($prova2,$pippo)) echo "ok";
    else echo "non funziona";
    }

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    [supersaibal]Originariamente inviato da piero.mac
    while($pippo = next($prova))
    {
    if(strstr($prova2,$pippo)) echo "ok";
    else echo "non funziona";
    } [/supersaibal]
    Ho capito dov'è il problema. Se il confronto viene effettuato con il primo valore dell'array. La funzione strstr(), non funziona, e credo che esca dal ciclo.

    Ora non so come risolvere questo problema.
    Se la felicità è dietro l'angolo allora la mia vita è un cerchio. (Mario Muraro)

  8. #8
    prova con

    if((strstr($prova2,$pippo)) !== FALSE) echo "ok";
    else echo "non funziona";


    perchè se è la prima occorrenza strstre restituisce 0 che viene valutato falso

  9. #9
    [supersaibal]Originariamente inviato da federcla
    Ho capito dov'è il problema. Se il confronto viene effettuato con il primo valore dell'array. La funzione strstr(), non funziona, e credo che esca dal ciclo.

    Ora non so come risolvere questo problema. [/supersaibal]
    Poiche' NEXT prima sposta il puntatore e poi estrae il dato va da se che parte ad estrarre dal secondo. dovresti usare "current()" per estrarre il primo e poi "next()" per i successivi.

    Mi sembra una complicazione inutile visto che se devi controllare l'esistenza di un dato puoi scorrere l'array con un foreach...


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    [supersaibal]Originariamente inviato da piero.mac
    Poiche' NEXT prima sposta il puntatore e poi estrae il dato va da se che parte ad estrarre dal secondo. dovresti usare "current()" per estrarre il primo e poi "next()" per i successivi.

    Mi sembra una complicazione inutile visto che se devi controllare l'esistenza di un dato puoi scorrere l'array con un foreach...

    [/supersaibal]
    Il manuale di php che sto usando indica foreach solo per PHP4 e non per la 5. E' per questo che non l'ho usata.
    Se la felicità è dietro l'angolo allora la mia vita è un cerchio. (Mario Muraro)

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.