⊗ppPmRgVA 258 of 447 menu

Lookahead in PHP Regex

Manchmal muss man eine Aufgabe dieser Art lösen: finde die Zeichenkette 'aaa' und ersetze sie durch '!', aber nur wenn nach 'aaa' ein 'x' folgt, wobei das 'x' selbst nicht ersetzt werden soll. Wenn wir versuchen, die Aufgabe 'auf direktem Wege' zu lösen, werden wir scheitern:

<?php preg_replace('#aaax#', '!', 'aaax'); // ergibt '!', aber '!x' ist benötigt ?>

Um die Aufgabe zu lösen, wird eine Möglichkeit benötigt, zu sagen, dass das 'x' nicht ersetzt werden soll. Dies wird mit Hilfe spezieller Klammern (?= ) erreicht, die nur prüfen, aber nicht mit aufnehmen.

Diese Klammern werden positives Lookahead genannt. Positiv - weil 'x' (in unserem Fall) vorhanden sein muss - nur dann findet die Ersetzung statt.

Wenden wir diese Klammern zur Lösung unserer Aufgabe an:

<?php preg_replace('#aaa(?=x)#', '!', 'aaax'); // gibt '!x' zurück ?>

Es gibt auch ein negatives Lookahead - (?! ) - dieses sagt im Gegensatz dazu, dass etwas nicht vorhanden sein darf. Im folgenden Beispiel findet die Ersetzung nur statt, wenn nach 'aaa' kein 'x' folgt:

<?php preg_replace('#aaa(?!x)#', '!', 'aaab'); // gibt '!b' zurück ?>

Gegeben ist ein String, der Funktionsnamen enthält:

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

Erhalten Sie ein Array der Funktionsnamen aus dem String.

Gegeben ist ein String mit einem Tag:

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

Erhalten Sie ein Array der Attributnamen dieses Tags.

Deutsch
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskΕλληνικά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
Wir verwenden Cookies für den Betrieb der Website, Analyse und Personalisierung. Die Datenverarbeitung erfolgt gemäß der Datenschutzerklärung.
alle akzeptieren anpassen ablehnen