Hledáte kvalitní a spolehlivý webhosting? Vyzkoušejte Český hosting.
Webhosting 1000 Kč/rok: 2GB, PHP 4 i 5, neom. subdomén a emailů, 10 databází

Převedení URL na odkaz

Častým úkolem, který je svěřován regulárním výrazům je převádění URL na odkaz (například v příspěvcích v diskuzních fórech). Cílem je, aby byly na odkaz převedeny adresy začínající http:// nebo jen www.. Dalším požadavkem pak bývá, aby pokud je adresa součástí věty a bezprostředně za posledním znakem adresy následuje čárka nebo tečka, aby toto interpunkční znaménko nebylo do adresy samozřejmě zahrnuto.

Veškeré uvedené požadavky splňuje níže uvedený příklad.

  • RV ((http://)|(www\.))([^ ]+[^,. ])
  • Náhrada <a href="http://$3$4">$2$3$4</a>
Ukázkový nahrazovaný text
Převádí adresy začínající na www, jako www.example.com, 
stejně jako adresy uvozené protokolem HTTP jako http://example.com/folder/script.php?var1=value&var2=value.
Ukázkový výsledný text
Převádí adresy začínající na www, jako <a href="http://www.example.com">www.example.com</a>,
stejně jako adresy uvozené protokolem HTTP jako <a
href="http://example.com/folder/script.php?var1=value&var2=value">http://example.com/folder/script.php?var1=value&var2=value</a>.

Poznámky

  • Není-li uvedeno jinak, příklad je primárně určen pro prostředí .NET (a byl testován v programu Expresso), avšak protože se jedná o Perl-compatible regulární výraz, měl by fungovat i v Perlu, PHP a pravděpodobně i Javascriptu a všech programech, které využívají Perl-compatible regulární výrazy (např. PSPad, Homesite, Total Commander a mnoho dalších).
  • Formát zápisu zpětných referencí v uvedených příkladech (shodné s programem Expresso)
    • zpětná reference v rámci výrazu – \n, kde n je číslo subvýrazu
    • zpětná reference v náhradě – $n, kde n je číslo subvýrazu
  • Způsob zápisu (nejen zpětných referencí) se v různých prostředích může lišit – viz přehled vlastností regulárních výrazů v různých prostředích.
  • Pokud vám některý výraz plně nevyhovuje nebo nefunguje, přečtěte si relevantní články v sekci Jak na ně... nebo se zkuste zeptat v diskuzním fóru.