Autor Zpráva
H13
Profil
Ahoj, potřeboval bych poradit, najít optimální regulární výraz pro nahrazení řetězce v URL. Nejlepší bude, když to uvedu v příkladu. Mám XHTML řetezec:

<p>Toto je retezec <a href="http://nejaka_stranka.cz/index.php?akce=retezec">retezec</a></p>

a potřebuju nahradit řetězec "retezec" za např. "string" pouze v adrese, tedy, abych dostal:


<p>Toto je retezec <a href="http://nejaka_stranka.cz/index.php?akce=string">retezec</a></p>


Zajímá mě hlavně "href=" (ne http:// ... protože adresa může být relativní)

Díky moc, Honza
SwimX
Profil
H13
např:
<?php
$a = '<p>Toto je retezec <a href="http://nejaka_stranka.cz/index.php?akce=retezec">retezec</a></p>';
$a = preg_replace('#(.+)href=\\"(.*)retezec(.*)\\"#si', "\\1href=\"\\2string\\3\"", $a);
echo $a;
?>
H13
Profil
Ahoj, díky ... mám s tím ale problém, pokud je $a větší např. 1000 znaků, pak se mi skript neprovede do 30 sekund :-(

Potřeboval bych aby to nefungovalo pouze pro jeden výskyt ale pro všechny v řetězci :-(
H13
Profil
Tak už jsem na to snad přišel... :

preg_replace_callback('{(.+)href=\"(.*)retezec(.*)\"}U', ..., ...)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: