⊗ppPmRgVA 258 of 447 menu

Pohled vpřed v regulárních výrazech PHP

Někdy je třeba vyřešit úlohu tohoto typu: najít řetězec 'aaa' a nahradit jej '!', ale pouze pokud za 'aaa' následuje 'x', přičemž samotné 'x' přitom nenahrazovat. Pokusíme-li se úlohu vyřešit 'přímo', nic se nám nepovede:

<?php preg_replace('#aaax#', '!', 'aaax'); // bude '!', ale má být '!x' ?>

K vyřešení úlohy je potřebný způsob, jak říct, že 'x' by se nemělo nahrazovat. Dělá se to pomocí speciálních závorek (?= ), které pouze 'dívají', ale neberou si s sebou.

Tyto závorky se nazývají pozitivní pohled vpřed. Pozitivní - protože 'x' (v našem případě) musí být - pouze tehdy dojde k nahrazení.

Aplikujme tyto závorky pro řešení naší úlohy:

<?php preg_replace('#aaa(?=x)#', '!', 'aaax'); // vrátí '!x' ?>

Existuje i negativní pohled vpřed - (?! ) - ten naopak říká, že něco by nemělo být. V následujícím příkladu dojde k nahrazení, pouze pokud za 'aaa' nenásleduje 'x':

<?php preg_replace('#aaa(?!x)#', '!', 'aaab'); // vrátí '!b' ?>

Je dán řetězec obsahující názvy funkcí:

<?php $str = 'func1() func2() func3()'; ?>

Získejte pole názvů funkcí z řetězce.

Je dán řetězec s tagem:

<?php $str = '<a href="" class="eee" id="zzz">'; ?>

Získejte pole názvů atributů tohoto tagu.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout