Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [php filtro parole]

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    105

    [php filtro parole]

    Vorrei capire il perchè se ho una situazione del genere:

    $string="mi piacciono le pere mature";

    $bad= array("mele", "pere", "banane");

    if (in_array($string, $bad)) {print "errore";} else{print "ok";}

    ... mi restituisce "errore" SOLO se la PRIMA parola di $string è una delle parole nell'array!

    per essere piu chiaro:

    $string="pere come siete belle" mi restituisce errore

    $string="le pere sono buonissime" mi restituisce ok

    E' normale tutto cio? mi piacerebbe caripe la logica di questa cosa dal momento che
    if (in_array($string, $bad)) dovrebbe confrontare tutte le parole di $string... o no?

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    in_arra() serve per vedere se il valore passato e' presente in una chiave di array. Non fa il confronto fra stringhe. Se non error per funzionare nel tuo caso, dovresti trovare tutta la stringa in un chiave dell array.

    edit :
    così ad esempio funziona:
    Codice PHP:

    $string
    ="pere come siete belle"// ok
    //$string="le pere sono buonissime"; //no

    $bad= array("pere come siete belle""pere""banane");

    if (
    in_array($string$bad)) {print "ok";} else{print "no";} 
    invertendo comunque il controllo ;

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    105
    ok, ho capito... ma allora devo percorrere un'altra strada perchè quello che voglio fare io è trovare dentro una stringa una delle parole esatte contenuta nell array (non una frase) e in base al risultato valorizare una variabile (errore o ok).

    PS. Fino ad oggi utilizzavo le espressioni regolari e sostituivo la parola vietata con degli asterischi, ma ora invece vorrei fare nell'altro modo descritto sopra per bloccare l'esecuzione del codice anzichè proseguire con le parole modificate in asterischi.

    grazie lo stesso per il tuo aiuto

  4. #4
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    fai un ciclo dell array e gli passi la stringa

    foreach($bad as $parola){
    if( eregi($parola, $stringa){
    //parola trovata... fai qualcosa
    }
    }

  5. #5
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Beh, se usavi le espressioni regolari, dovresti poter recuperare molto del lavoro fatto semplicemente cambiando ereg_replace con ereg oppure preg_replace con preg_match

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    105
    Ricordiamoci sempre che EREGI (e altre) non sono utilizzabili, vedi http://php.net/manual/en/function.eregi.php

    Waring:
    This function has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 6.0.0. Relying on this feature is highly discouraged.


    coumunque grazie per gli aiuti, adesso penso di potercela fare graziee

  7. #7
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Hai ragione!

    Ottima osservazione, grazie

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.