Autor Zpráva
Pavka
Profil
Ahoj, potřeboval bych zajistit nahrazování odkazů, které obsahují proměnné "statickým" odkazem, odkazujícím na normální html soubor - slyšel jsem, že to zvýší pravděpodobnost nalezení stránky vyhledávačem.

Zatím to nahrazuji tímto regulárním výrazem:
$a = '<a href="index.php?action=login&amp;uch=ouch">blabla</a>';
echo preg_replace('#<a href="index.php\?(.*?)=(.*?)[&?|(&amp;)?](.*)"(.*)>(.*)</a>#', '<a href="http://url.com/web/\\1(\\2).html"\\4>\\5</a>', $a);
// vypíše <a href="http://url.com/web/action(login).html">blabla</a>

No a jak asi tušíte a vidíte, problém nastává pokud je v url víc jak jedna proměnná, nedaří semi přijít na to jak nahradit proměnný počet proměnných. Proto se obracím na vás, doufám, že jsem to dobře zformuloval. Díky za pomoc.
Oswald
Profil
Možná požít nějaký obecnější regexp a zpracovávat pomocí preg_replace_callback.

Jinak tahle část dělá nejspíš něco jiného, než bylo zamýšleno: [&?|(&amp;)?] - bere jakýkoliv znak ze skupiny '&', '(', 'a', 'm', 'p', ';', ')' a '?'.
Pavka
Profil
díky mrknu na to
[&?|(&amp;)?] - operátor "?" znamená předchozí znak max. jednou, "|" rozdělení na pod výrazy, [] libovolný ze znaků, () všechny znaky = buď nic, & nebo &amp;
Leo
Profil
Urcite preg_replace_callback, nebo neco podobnyho - krome jinyho by mela normalizovat poradi promennych, abyste nemel na ruznych URL stejny obsah. Leo
Toto téma je uzamčeno. Odpověď nelze zaslat.

0