mi serve una espressione regolare che modifica tutte i collegamenti dei tag "a", http://miosito.it/forum in http://miosito.it/sito
mi serve una espressione regolare che modifica tutte i collegamenti dei tag "a", http://miosito.it/forum in http://miosito.it/sito
Io le espressioni regolari non le so usare...quindi ti do una mia soluzione "normale"...in caso nessun altro ti risponda hai una scappatoia per lo meno ^^'
risultato:Codice PHP:
function find_a_href($str)
{
$str = stristr($str, "<a");
$oc = strpos($str, ">");
$str_part = substr($str, 0, $oc+1);
$rest = substr($str, $oc+1);
$str_part = stristr($str_part, "href");
if(strpos($str_part, "'"))
{
$str_part = stristr($str_part, "'");
$str_part = substr($str_part, 1);
$oc = strpos($str_part, "'");
$str_part = substr($str_part, 0, $oc);
}
else if(strpos($str_part, "\""))
{
$str_part = stristr($str_part, "\"");
$str_part = substr($str_part, 1);
$oc = strpos($str_part, "\"");
$str_part = substr($str_part, 0, $oc);
}
$str_part = preg_replace("/forum/",'sito',$str_part);
if(stristr($rest, "[url='http://miosito.it/forum']bla bla[/url] testo ancora di prova [url='http://tuosito.it/forum']bla bla 2[/url]";
print_r(explode("|", find_a_href($sorgente)));
La funzione ti restituisce un array con dentro tutte le occorrenze degli HREF della stringa e sostituisce "forum" con "sito".codice:Array ( [0] => http://miosito.it/sito [1] => http://tuosito.it/sito )
Spero qualcun altro ti risponda usando le regex cosi cerco di impararci qualcosa
![]()
la funzione non va... a me serve una funzione che modifica i tag "a", mantenendo il codice circostante.
Ho provato a buttar giù questa regexp. Spero di non aver scritto pasticci.![]()
codice:$indirizzo = "http://miosito.it/forum/pippo.php"; $indirizzo = preg_replace("/^http:\/\/miosito.it\/forum(.?)+$/","http://miosito.it/sito",$indirizzo); echo $indirizzo;
codice:function cambia($stringa){ $cerca = 'forum'; if((strpos($stringa, $cerca)) !== false) { $stringa = str_replace('forum', 'sito', $stringa); echo $stringa; }else{ echo $stringa; } } cambia('http://www.miosito.it/forum/pippo.php');![]()
Io non ho capito se deve fare solo la sostituzione della parola forum con sito oppure se deve anche far scomparire dal link originale tutto ciò che eventualmente segue a forum.
siccome devo incorporare un forum a un sito, mi servirebbe uno script che modifica tutti i link del forum con il link riferito al sito, però la query string deve rimanere intatta.
e con un semplicissimo str_replace()?
Codice PHP:
function find_a_href($str)
{
$str_part = str_replace("/forum", "/sito", $str);
return $str_part;
}
$sorgente = "testo di prova [url='http://miosito.it/forum']bla bla[/url] testo ancora di prova [url='http://tuosito.it/forum']bla bla 2[/url]";
print(find_a_href($sorgente));