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í textu mezi tagy

Občas můžeme chtít hromadně změnit text mezi určitými tagy, například v h1 nadpisu. Pokud ovšem text, který chceme nahradit není jednotný, je třeba využít regulárního výrazu. Tento postup najde uplatnění v případě, že chceme provést náhradu v několika HTML souborech zároveň.

Nahrazení jednotným textem

V tomto případě bude původní text nalezený mezi tagy nahrazen pevně daným textem. Příklad předpokládá, že tag v němž chceme nahradit text neobsahuje jakékoliv vnořené tagy.

  • RV <h1>[^<]+</h1>
  • Náhrada <h1>Nový text</h1>
Ukázkový nahrazovaný text
<h1>Nadpis1</h1>
<p>Text</p>
<h1>Nadpis2</h1>
<p>Text</p>
Ukázkový výsledný text
<h1>Nový text</h1>
<p>Text</p>
<h1>Nový text</h1>
<p>Text</p>

Přidání textu před/za původní text

V tomto případě bude původní text nalezený mezi tagy doplněn zleva a zprava libovolným textem. V tomto příkladu zleva textem TextPřed  a zprava textem  TextZa. Příklad předpokládá, že tag v němž chceme nahradit text neobsahuje jakékoliv vnořené tagy.

  • RV <h1>([^<]+)</h1>
  • Náhrada <h1>TextPřed $1 TextZa</h1>
Ukázkový nahrazovaný text
<h1>Nadpis1</h1>
<p>Text</p>
<h1>Nadpis2</h1>
<p>Text</p>
Ukázkový výsledný text
<h1>TextPřed Nadpis1 TextZa</h1>
<p>Text</p>
<h1>TextPřed Nadpis2 TextZa</h1>
<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.