View Full Version : [PHP] PREG REPLACE COME FUNZIONA?
Salve a tutti, :D
se c'è un'ostacolo che non ho mai superato è capire come cavolo funziona.
preg_replace.
fin'ora ho capito solo come sostituire una precisa stringa con un'altra precisa stringa, ma per il resto? immagino sia una funzione dalle grandi potenzialità, ma quando comincio a vedere cose come queste:
"'<[\/\!]*?[^<>]*?>'si",
comincio davvero a perdermi, cosa significano questi simboli, qual'è il loro significato ad esempio in questo caso?
Grazie a tutti quelli che mi aiuteranno.
Adriano.
fin'ora ho capito solo come sostituire una precisa stringa con un'altra precisa stringa, ma per il resto? immagino sia una funzione dalle grandi potenzialità, ma quando comincio a vedere cose come queste:
"'<[\/\!]*?[^<>]*?>'si",
comincio davvero a perdermi, cosa significano questi simboli, qual'è il loro significato ad esempio in questo caso?Si chiamano "espressioni regolari"
http://www.php.net/manual/en/reference.pcre.pattern.syntax.php
http://en.wikipedia.org/wiki/Regular_expression
grazie andbin,
ho già iniziato a leggere :D , ma visto che ci metterò un pochino per capire bene tutto mi faresti solo un esempio pratico almeno di questo genere:
supponiamo che io voglia fare dei link in automatico quindi ad esempio riconoscere tutte le stringhe che iniziano per http:// e finiscono per .com e farle diventare <a href="http://qualsiasicosa.com" target="_blank">http://www.qualsiasicosa.com</a>.
Tu come faresti?
thanx :cool:
cavolo Angel solo ora vedo la tua risposta, in PHP.
in pratica dovrei sostituire
(L=http://www.indirizzodellink.com)titolo del link(/L)
con
<a href=\"http://www.indirizzodellink.com\">titolo del link</a>
mi aiuti?
in pratica dovrei sostituire
(L=http://www.indirizzodellink.com)titolo del link(/L)
con
<a href=\"http://www.indirizzodellink.com\">titolo del link</a>Ecco:
<?php
$s = "(L=http://www.indirizzodellink.com)titolo del link(/L)";
$s2 = preg_replace ("/\(L=(.*)\)(.*)\(\/L\)/", "<a href=\"$1\">$2</a>", $s);
echo $s2;
?>
Ecco:
<?php
$s = "(L=http://www.indirizzodellink.com)titolo del link(/L)";
$s2 = preg_replace ("/\(L=(.*)\)(.*)\(\/L\)/", "<a href=\"$1\">$2</a>", $s);
echo $s2;
?>
Non so davvero come ringraziarti, provo ad implementarlo subito grazie :D
P.S. come da tuo consiglio sono andato a leggere la documentazione sulle espressioni regolari ma non mi è ancora chiaro il quadro generale del preg replace.
Leggendo il codice che mi hai mandato credo di aver capito un'altra cosa che ignoravo, se non erro, ovvero che vengono impostate in automatico delle variabili numeriche progressive contenenti le stringhe da lasciare invariate in ordine di apparizione....dico bene?
Ecco:
<?php
$s = "(L=http://www.indirizzodellink.com)titolo del link(/L)";
$s2 = preg_replace ("/\(L=(.*)\)(.*)\(\/L\)/", "<a href=\"$1\">$2</a>", $s);
echo $s2;
?>
:cool: Ciao AndBin, rispolvero questo post per una problematica pertinente che mi si è rivelata con l'utilizzo di questo script.
In pratica lo script funziona se in un testo c'è un solo link, mentre già se ne metto 2 va in tilt.
Ho provato a cambiare l'espressione, ma ancora nessun risultato. Sapresti per caso aiutarmi?
grazie, Adriano.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.