- Home
- Categorie
- Coding e Sistemistica
- PHP
- Sostituire sito co preg_replace
-
Sostituire sito co preg_replace
Fai cosi:
[PHP]$sitiArray = array("sito1", "sito2.it");
$replacements = "[Good]";
$messaggio = str_replace($sitiArray, $replacements, $messaggio);[/PHP]
-
-
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);
-
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]
-
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]
-
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);
-
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]