⊗ppPmRgVA 258 of 447 menu

Lookahead w wyrażeniach regularnych PHP

Czasami trzeba rozwiązać zadanie tego typu: znaleźć ciąg 'aaa' i zamienić go na '!', ale tylko jeśli po 'aaa' znajduje się 'x', przy czym samego 'x' nie zamieniamy. Jeśli spróbujemy rozwiązać zadanie 'bezpośrednio', nic nam nie wyjdzie:

<?php preg_replace('#aaax#', '!', 'aaax'); // będzie '!', a ma być '!x' ?>

Aby rozwiązać zadanie, potrzebny jest sposób na powiedzenie, że 'x' nie powinno być zastępowane. Robi się to za pomocą specjalnych nawiasów (?= ), które tylko sprawdzają, ale nie pobierają ze sobą.

Te nawiasy nazywają się pozytywny przegląd naprzód. Pozytywny - ponieważ 'x' (w naszym przypadku) musi być - tylko wtedy nastąpi zamiana.

Zastosujmy te nawiasy do rozwiązania naszego zadania:

<?php preg_replace('#aaa(?=x)#', '!', 'aaax'); // zwróci '!x' ?>

Istnieje też negatywny przegląd naprzód - (?! ) - który, przeciwnie, mówi, że czegoś nie powinno być. W następnym przykładzie zamiana nastąpi tylko, jeśli po 'aaa' nie znajduje się 'x':

<?php preg_replace('#aaa(?!x)#', '!', 'aaab'); // zwróci '!b' ?>

Dany jest ciąg zawierający nazwy funkcji:

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

Pobierz tablicę nazw funkcji z ciągu.

Dany jest ciąg z tagiem:

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

Pobierz tablicę nazw atrybutów tego tagu.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć