• User

    Sostituire sito co preg_replace

    Fai cosi:

    [PHP]$sitiArray = array("sito1", "sito2.it");

    $replacements = "[Good]";

    $messaggio = str_replace($sitiArray, $replacements, $messaggio);[/PHP]


  • User

    array ("/\bsito.it\b/i");

    deve essere array ("sito.it");


  • User

    Che tipo di conflitto?? in ogni caso io farei cosi:

    $paroleArray = array ("/\bmela\b/i","/\bpera\b/i");
    $replacements = "<span class="badWord">[OK]</span>";

    $sitiArray = array ("sito.it");
    $replacements2 = "<span class="badWord">[GOOD]</span>";

    $messaggio = $riga['messaggio'];
    $messaggio = preg_replace($paroleArray, $replacements, $messaggio);
    $messaggio = str_ireplace($sitiArray, $replacements2, $messaggio);

    echo "<span class="carattereMess">".$messaggio."</span>";
    echo "<span class="carattereMess">".$messaggio."</span>";

    //Rende l'URL linkabile nel campo messaggio, ho tolto ^ e $ perché in questa sit non servono
    $messaggio = preg_replace("/(ftp(s|es)?://|sftp://|http(s)?://|www.)[A-Za-z0-9_!#$%&;:.,+=?^{|}()~/-]+(.[a-z]{2,6})((/)[-_!#$%&;:.,+=?^{|}()~A-Za-z0-9/])/","<a class="carattereText" href="$0" target="_blank">$0</a>",$messaggio);


  • User

    e allora ti conviene fare un str_replace per rendere i link tutti dello stesso tipo
    [PHP]
    $messaggio = str_replace( array('http:/ /', 'w w w .'), '', strtolower($messaggio);[/PHP]


  • User

    Ho trovato e testato questo pattern e sembra funzionare bene

    [PHP]$pattern = "/(?i)\b((?:https?://|www\d{0,3}[.]|[a-z0-9.-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|(([^\s()<>]+|(([^\s()<>]+)))))+(?:(([^\s()<>]+|(([^\s()<>]+))))|[^\s`!()[]{};:'".,<>?«»????]))/"; $messaggio = preg_replace($pattern, '<a class="caratteretext" href="$1" target="_blank">$1</a>', $messaggio);[/PHP]


  • User

    Aggiungilo al replace manualmente cosi lo inserisce solo dove serve:

    $messaggio = preg_replace($pattern, '<a class="caratteretext" href="htt p: / /$1" target="_blank">$1</a>', $messaggio);


  • User

    Ho fatto una prova secondo quello che ho capito ed è uscito questo:

    [PHP]$rplKey = '[good]';

    $removeUrlPrefix =
    array(
    'htt p://ww w.'.$rplKey,
    'htt p://'.$rplKey,
    'ww w.'.$rplKey
    );

    $sitiArray = array('badurl.com', 'site2.it');

    $messaggio = <<<MESSAGE
    Ciao htt p://ww w.dominio.com Mondo!
    Ciao htt p://ww w.dominio.com Mondo!
    Ciao htt p://ww w.badurl.com Mondo!
    Ciao htt p://ww w.dominio.com Mondo!
    Ciao ww w.dominio.com Mondo!
    Ciao htt p://dominio.com Mondo!
    MESSAGE;

    $messaggio = str_replace($sitiArray, $rplKey, $messaggio);
    $messaggio = str_replace($removeUrlPrefix, $rplKey, $messaggio);

    $pattern = "/(?i)\b((?:https?://|www\d{0,3}[.]|[a-z0-9.-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|(([^\s()<>]+|(([^\s()<>]+)))))+(?:(([^\s()<>]+|(([^\s()<>]+))))|[^\s`!()[]{};:'".,<>?«»????]))/";

    $messaggio = preg_replace($pattern, '<a class="caratteretext" href="$1" target="_blank">$1</a>', $messaggio);

    echo $messaggio;
    [/PHP]