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í  

Nahrazení HTML tagů

Pomocí jednoduchého regulárního výrazu můžeme nahradit v celém dokumentu určitý HTML tag za jiný.

Nejjednodušší varianta – bez atributů

Tento příklad nahradí všechny h1 tagy za h2 tagy. Nahrazovaný tag nesmí mít žádné atributy. Tento příklad je použitelný pro párové tagy.

  • RV <(/?)h1>
  • Náhrada <$1h2>
Ukázkový nahrazovaný text
<h1>Nadpis1</h1>
<p>Text</p>
<h1>Nadpis2</h1>
<p>Text</p>
Ukázkový výsledný text
<h2>Nadpis1</h2>
<p>Text</p>
<h2>Nadpis2</h2>
<p>Text</p>

Vylepšená varianta – s atributy

Tento příklad nahradí všechny h1 tagy za h2 tagy. Pokud má nahrazovaný tag atributy, budou zachovány i po změně tagu. Pokud se chceme zároveň spolu se záměnou tagů atributů zbavit, stačí použít náhradu <$1h2>. Tento příklad je použitelný pro párové tagy.

  • RV <(/?)h1([^>]*)>
  • Náhrada <$1h2$2>
Ukázkový nahrazovaný text
<h1 id="top" class="general">Nadpis1</h1>
<p>Text</p>
<h1 class="general">Nadpis2</h1>
<p>Text</p>
Ukázkový výsledný text
<h2 id="top" class="general">Nadpis1</h2>
<p>Text</p>
<h2 class="general">Nadpis2</h2>
<p>Text</p>

Sofistikovaná varianta – záměna podmíněná atributem

Tento příklad nahradí všechny h1 tagy, ovšem pouze ty které mají (právě a pouze jen tento) atribut class="subheader" za h2 tagy při zachování tohoto atributu. Pokud má nahrazovaný tag atributy, budou zachovány i po změně tagu. Pokud se chceme zároveň spolu se záměnou tagů atributů zbavit, stačí použít náhradu <h2>$3</h2>. Tento příklad je použitelný pro párové tagy. Příklad předpokládá, že v párovém tagu, který je nahrazován není vnořen žádný HTML tag.

  • RV <(h1)\s+(class="subheader")>([^<]+)</\1>
  • Náhrada <h2 $2>$3</h2>
Ukázkový nahrazovaný text
<h1 class="normal">Nadpis1</h1>
<p>Text</p>
<h1 class="subheader">Nadpis2</h1>
<p>Text</p>
Ukázkový výsledný text
<h1 class="normal">Nadpis1</h1>
<p>Text</p>
<h2 class="subheader">Nadpis2</h2>
<p>Text</p>

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.