Visualizzazione risultati 1 fino 29 di 29

Discussione: array intercetta la parola composta

  1. #1
    Guest

    Predefinito array intercetta la parola composta

    Con questo codice intercetto la parola anche se viene scritto es. "melassa", vorrei che trovasse solo la parola singola, cioè se è composta deve lasciarla passare

    Codice PHP:
    <?php
    $paroleArray
    = array (
    "mela","mele"
    );

    ...

    $messaggio = str_ireplace($paroleArray,"[Parola]",$messaggio);
    Ultima modifica di gruppoalveo : 25-01-2013 alle ore 20.37.20

  2. #2
    Guest

    Predefinito

    Scusa ma in italiano sarebbe?

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da simpleticket Visualizza messaggio
    Scusa ma in italiano sarebbe?
    cosa, spiegati

  4. #4
    Guest

    Predefinito

    sinceramente non ho capito cosa tu voglia dire.
    spiegati meglio.

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da simpleticket Visualizza messaggio
    sinceramente non ho capito cosa tu voglia dire.
    spiegati meglio.
    L'ho anche scritto! Se nel campo del form viene scritto mela, il codice la intercetta e la sostituisce con [Parola], se invece è una parola composta es. melassa, melette, ecc. la lascia passare

  6. #6
    Guest

    Predefinito

    prova a dare un'occhiata a preg_replace che fa uso delle espressioni regolari.

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da simpleticket Visualizza messaggio
    prova a dare un'occhiata a preg_replace che fa uso delle espressioni regolari.
    Ho cercato ma non risolvo

  8. #8
    Guest

    Predefinito

    Credo che tu non sia neanche arrivato a leggere gli esempi.

    Adattando il primo esempio di preg_replace e usando il delimitatore \b (fine parola), usando il codice

    Codice PHP:
    <?php
    $string
    = 'la mela di biancaneve non era per melania';
    $patterns = array(
    '/\bmela\b/',
    '/\bmele\b/'
    );

    $replacements = '[PAROLA]';

    echo
    preg_replace($patterns, $replacements, $string);
    ?>
    ottieni il risultato voluto, ovvero

    la [PAROLA] di biancaneve non era per melania

  9. #9
    Guest

    Predefinito

    Citazione Originalmente inviato da simpleticket Visualizza messaggio
    Credo che tu non sia neanche arrivato a leggere gli esempi.

    Adattando il primo esempio di preg_replace e usando il delimitatore \b (fine parola), usando il codice

    Codice PHP:
    <?php
    $string
    = 'la mela di biancaneve non era per melania';
    $patterns = array(
    '/\bmela\b/',
    '/\bmele\b/'
    );

    $replacements = '[PAROLA]';

    echo
    preg_replace($patterns, $replacements, $string);
    ?>
    ottieni il risultato voluto, ovvero
    Scusa ma non riesco a capire, mio codice completo è diverso dal tuo, non puoi mettermelo strutturato così? L'ho provato ma non funziona anche se ho sostituito i nomi con $messaggio

    Codice PHP:
    $paroleArray = array (
    "mela","mele"
    );

    ...

    $messaggio = str_ireplace($paroleArray,"[Parola]",$messaggio);
    EDIT: come echo ho questo

    Codice PHP:
    echo "<div class=\"messaggioBox\">".$riga['messaggio']."</div>";
    Ultima modifica di gruppoalveo : 26-01-2013 alle ore 00.16.07 Motivo: aggiunta

  10. #10
    Guest

    Predefinito

    Citazione Originalmente inviato da gruppoalveo Visualizza messaggio
    Scusa ma non riesco a capire, mio codice completo è diverso dal tuo, non puoi mettermelo strutturato così?
    Quello che ti ho scritto è solo un esempio, tra l'altro tratto dalla pagina relativa alla funzione suggerita, per farti capire come funziona.
    Non è codice pronto da utilizzare.
    Per quello devi adattarlo tu.

    Tra l'altro mi pare che tu continui ad usare replace e non la funziona suggerita, e con quella difficilmente arriverai alla meta.

  11. #11
    Guest

    Predefinito

    Citazione Originalmente inviato da simpleticket Visualizza messaggio
    Quello che ti ho scritto è solo un esempio, tra l'altro tratto dalla pagina relativa alla funzione suggerita, per farti capire come funziona.
    Non è codice pronto da utilizzare.
    Per quello devi adattarlo tu.

    Tra l'altro mi pare che tu continui ad usare replace e non la funziona suggerita, e con quella difficilmente arriverai alla meta.
    Il mio problema forse è quello di riuscire a mettere il div class nell'echo

    Codice PHP:

    $paroleArray
    = array(
    '/\bmela\b/',
    '/\bmele\b/'
    );

    $replacements = '[PAROLA]';

    echo
    preg_replace($paroleArray, $replacements, $messaggioS);
    Questo è il mio l'originale che non riesco a mettere nel tuo echo
    Codice PHP:
    echo "<div class=\"messaggioBox\">".$riga['messaggio']."</div>";
    Ultima modifica di gruppoalveo : 26-01-2013 alle ore 11.43.09

  12. #12
    Guest

    Predefinito

    Codice PHP:
    echo "<div class=\"messaggioBox\">".preg_replace($paroleArray, $replacements, $riga['messaggio'])."</div>";

  13. #13
    Guest

    Predefinito

    Citazione Originalmente inviato da simpleticket Visualizza messaggio
    Codice PHP:
    echo "<div class=\"messaggioBox\">".preg_replace($paroleArray, $replacements, $riga['messaggio'])."</div>";
    Messo così non stampa niente

    Codice PHP:

    <?php
    $paroleArray
    = array(
    '/\bmela\b/',
    '/\bmele\b/'
    );

    $replacements = '[PAROLA]';

    echo
    "<div class=\"messaggioBox\">".preg_replace($paroleArray, $replacements, $riga['messaggio'])."</div>";

  14. #14
    Guest

    Predefinito

    ma $riga['messaggio'] cosa contiene?

    Codice PHP:
    echo $riga['messaggio'];
    che ti stampa?

  15. #15
    Guest

    Predefinito

    Citazione Originalmente inviato da simpleticket Visualizza messaggio
    ma $riga['messaggio'] cosa contiene?

    Codice PHP:
    echo $riga['messaggio'];
    che ti stampa?
    E' tutto un blocco di echo che stampano i dati in un box

    Codice PHP:
    ...
    $q="SELECT * FROM successi ORDER BY id ASC LIMIT $numero";
    // Lancio la query
    $ris=mysql_query($q);
    if(
    mysql_num_rows($ris) > 0) { // Conto i record (i campi nella tabella del db)
    // Leggo un record alla volta e lo stampo
    while($riga=mysql_fetch_array($ris)) {
    echo...
    echo...

    ...

  16. #16
    Guest

    Predefinito

    Scusa ma così non riesco a capire.

    Posta almeno la parte di codice interessata e non singole righe o parti.

  17. #17
    Guest

    Predefinito

    Citazione Originalmente inviato da simpleticket Visualizza messaggio
    Scusa ma così non riesco a capire.

    Posta almeno la parte di codice interessata e non singole righe o parti.
    Codice PHP:
    $numero=3; // Limite max successi da visualizzare nella pag. successi.php
    // Estraggo 8 successi dall'alto verso il basso, in ordine crescente
    $q="SELECT * FROM successi ORDER BY id ASC LIMIT $numero";
    // Lancio la query
    $ris=mysql_query($q);
    if(
    mysql_num_rows($ris) > 0) { // Conto i record (i campi nella tabella del db)
    // Leggo un record alla volta e lo stampo
    while($riga=mysql_fetch_array($ris)) {
    //verifico se il conteggio è pari o dispari e in alternato cambio il colore
    if($contatore%2==0) {
    $sfondo="#f7f7f7";
    }
    else {
    $sfondo="#e9eff1";
    }
    echo
    "<div class=\"stampaS\" style=\"background-color: $sfondo \">";
    echo
    "<div class=\"dataBox\">".crea_data($riga['data_localeS'])."<div class=\"idSuccessiSX\"></div><div class=\"idSuccessiDX\">#".$riga['id']."</div></div>";
    echo
    "<div class=\"campiAltiS\">";
    echo
    "<div class=\"oggettoBox\">".$riga['oggettoS']."</div>";
    echo
    "</div>"; // campiAltiS
    echo "<div class=\"messaggioBox\">".$riga['messaggioS']."</div>";
    echo
    "<div class=\"bassoS\"></div>"; // bassoS
    echo "<div class=\"nomeBox\">".$riga['nomeS'].",</div>";
    if(!empty(
    $riga['cittaS'])) { // Se il campo è vuoto non stampa neanche la virgola
    echo "<div class=\"cittaBox\">".$riga['cittaS'].",&nbsp;&nbsp;</div>";
    }
    echo
    "<div class=\"ipBox\">Ip: $ip</div>";
    echo
    "<div class=\"bandierinaBox\">$bandierina<div class=\"nazione\">".$countries[$two_letter_country_code][1]."</div></div>";
    echo
    "</div>";//stampaS
    $contatore ++; // a ogni giro incremento di uno
    }

  18. #18
    Guest

    Predefinito

    In questo codice non è $riga['messaggio'] come avevi prima scritto, ma $riga['messaggioS'].

    Aggiusta il codice di prima e riprova.

  19. #19
    Guest

    Predefinito

    Citazione Originalmente inviato da simpleticket Visualizza messaggio
    In questo codice non è $riga['messaggio'] come avevi prima scritto, ma $riga['messaggioS'].

    Aggiusta il codice di prima e riprova.
    Ho messo la S poi ho scritto mela e melassa ma le ha stampate entrambi, il codice ora è questo:

    Codice PHP:
    <?php
    $paroleArray
    = array(
    '/\bmela\b/',
    '/\bmele\b/'
    );

    $replacements = '[PAROLA]';

    ...

    echo
    "<div class=\"messaggioBox\">".preg_replace($paroleArray, $replacements, $riga['messaggioS'])."</div>";
    ?>

  20. #20
    Guest

    Predefinito

    ho copiato il codice:

    Codice PHP:
    <?php
    $paroleArray
    = array(
    '/\bmela\b/',
    '/\bmele\b/'
    );

    $riga['messaggioS'] = 'La mela non ha nulla a che vedere con la melassa.';
    $replacements = '[PAROLA]';

    echo
    "<div class=\"messaggioBox\">".preg_replace($paroleArray, $replacements, $riga['messaggioS'])."</div>";
    ?>
    su http://simpleticket.altervista.org/lab/replace.php

    e come vedi la sostituzione è corretta.

  21. #21
    Guest

    Predefinito

    Citazione Originalmente inviato da simpleticket Visualizza messaggio
    ho copiato il codice:

    Codice PHP:
    <?php
    $paroleArray
    = array(
    '/\bmela\b/',
    '/\bmele\b/'
    );

    $riga['messaggioS'] = 'La mela non ha nulla a che vedere con la melassa.';
    $replacements = '[PAROLA]';

    echo
    "<div class=\"messaggioBox\">".preg_replace($paroleArray, $replacements, $riga['messaggioS'])."</div>";
    ?>
    su http://simpleticket.altervista.org/lab/replace.php

    e come vedi la sostituzione è corretta.
    Ora funziona ma non del tutto, ti spiego:

    messo così non funziona

    Codice PHP:
    include ("parole-proibite.php");

    $messaggioS = str_ireplace($paroleArray,"<span style=\"font-family:times; font-size:15px; color:#df0202;\">[Parola censurata]</span>",$messaggioS);
    invece così nella pagina funziona, ma non è uguale?

    Codice PHP:
    $paroleArray = array(
    '/\bmela\b/',
    '/\bmele\b/'
    );

    $replacements = '[PAROLA]';

    $messaggioS = str_ireplace($paroleArray,"<span style=\"font-family:times; font-size:15px; color:#df0202;\">[Parola censurata]</span>",$messaggioS);

  22. #22
    Guest

    Predefinito

    tu continui ad usare str_ireplace, ma a te serve una funzione (preg_replace), che faccia uso delle espressioni regolari per poter identificare i limiti delle parole (\b), qualunque essi siano (punteggiatura, spazi, fine riga, a capo, ...)

  23. #23
    Guest

    Predefinito

    Citazione Originalmente inviato da simpleticket Visualizza messaggio
    tu continui ad usare str_ireplace, ma a te serve una funzione (preg_replace), che faccia uso delle espressioni regolari per poter identificare i limiti delle parole (\b), qualunque essi siano (punteggiatura, spazi, fine riga, a capo, ...)
    Si, mi ero confuso, ora funziona.

    Ancora una cosa, devo mettere questo span a $riga['messaggioS']

    <span style=\"font-family:times; font-size:15px; color:#df0202;\>


    Codice PHP:
    echo "<div class=\"messaggioBox\">".preg_replace($paroleArray, $replacements, $riga['messaggioS'])."</div>";
    Ultima modifica di gruppoalveo : 26-01-2013 alle ore 16.16.41 Motivo: Modifica

  24. #24
    Guest

    Predefinito

    Prima un paio di cose:

    1) <span> è un tag che prevede anche il tag di chiusura (</span>) e quindi non si scrive

    Codice PHP:
    <span ... />
    (con lo slash finale, non backslash "\")

    ma

    Codice PHP:
    <span ...></span>
    2) se hai bisogno di assegnare uno stile particolare, non impostare lo stile inline ma assegna una classe e poi imposta lo stile modificando il CSS, quindi, non

    Codice PHP:
    <span style="... " \>
    ma

    Codice PHP:
    <span class="mia_classe">...</span>
    e poi

    Codice PHP:
    .mia_classe {
    ...
    }
    Detto questo potresti fare

    Codice PHP:
    echo "<div class=\"messaggioBox\"><span class=\"mia_classe\">".preg_replace($paroleArray, $replacements, $riga['messaggioS'])."</span></div>";

  25. #25
    Guest

    Predefinito

    Citazione Originalmente inviato da simpleticket Visualizza messaggio
    Prima un paio di cose:

    1) <span> è un tag che prevede anche il tag di chiusura (</span>) e quindi non si scrive

    Codice PHP:
    <span ... />
    (con lo slash finale, non backslash "\")

    ma

    Codice PHP:
    <span ...></span>
    2) se hai bisogno di assegnare uno stile particolare, non impostare lo stile inline ma assegna una classe e poi imposta lo stile modificando il CSS, quindi, non

    Codice PHP:
    <span style="... " \>
    ma

    Codice PHP:
    <span class="mia_classe">...</span>
    e poi

    Codice PHP:
    .mia_classe {
    ...
    }
    Detto questo potresti fare

    Codice PHP:
    echo "<div class=\"messaggioBox\"><span class=\"mia_classe\">".preg_replace($paroleArray, $replacements, $riga['messaggioS'])."</span></div>";
    L'ho messo inline e funziona, di solito uso così quando ci sono pochi css, dici che non va bene?

    Codice PHP:
    echo "<div class=\"messaggioBox\"><span style=\"font-family:times; font-size:15px; color:#df0202;\">".preg_replace($paroleArray, $replacements, $riga['messaggioS'])."</span></div>";

  26. #26
    Guest

    Predefinito

    Di funzionare funziona, ma semanticamente non è corretto.
    Supponi che un domani tu voglia cambiare lo stile del tuo sito. Se hai la separazione Struttura/Stile ti basta mettere mano al tuo CSS, perchè venga cambiato il modo di mostrare i contenuti in tutto il sito, senza bisogno di andare a cercare istruzione per istruzione, pagina per pagina la parte da modificare.

  27. #27
    Guest

    Predefinito

    Citazione Originalmente inviato da simpleticket Visualizza messaggio
    Di funzionare funziona, ma semanticamente non è corretto.
    Supponi che un domani tu voglia cambiare lo stile del tuo sito. Se hai la separazione Struttura/Stile ti basta mettere mano al tuo CSS, perchè venga cambiato il modo di mostrare i contenuti in tutto il sito, senza bisogno di andare a cercare istruzione per istruzione, pagina per pagina la parte da modificare.
    E' strano però, così colora tutta la frase

    Codice PHP:

    .badWord {
    font-family:times;
    font-size:15px; color:#df0202;
    }
    ...
    echo
    "<div class=\"messaggioBox\"><span class=\"badWord\">".preg_replace($paroleArray, $replacements, $riga['messaggioS'])."</span></div>";

  28. #28
    Guest

    Predefinito

    Beh, si, la classe viene applicata a tutto il tag <span>.
    Se vuoi applicarla solo alla parola censurata, dei inserire il tag <span ...> alla sostituzione

    Codice PHP:
    $replacements = '<span class="badWord">[Parola Censurata]</span>';

  29. #29
    Guest

    Predefinito

    Ok, funziona, ora sto cercando di applicare lo stesso metodo ma in un altro contesto cioè, se nel campo messaggio viene inserito un sito proibito anche qui deve sostituire con una parola.

    Ho messo così ma

    Codice PHP:
    $sitiArray = array (
    "/\bwww.sito.it\b/i"
    );
    $replacements2 = "<span class=\"badWord\">[Sito censurato]</span>";
    ?>

    $messaggio = "<span class=\"carattereMess\">".preg_replace($sitiArray, $replacements2,$messaggio)."</span>",$messaggio);
    Ultima modifica di gruppoalveo : 27-01-2013 alle ore 11.11.06 Motivo: aggiunta

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •