15.09.2024
Heim / Internet / PHP-Regular-Ausdrücke-Preg-Übereinstimmung. Reguläre Ausdrücke in PHP. Ersetzen Sie doppelte Anführungszeichen durch intelligente Anführungszeichen

PHP-Regular-Ausdrücke-Preg-Übereinstimmung. Reguläre Ausdrücke in PHP. Ersetzen Sie doppelte Anführungszeichen durch intelligente Anführungszeichen


Eine der sehr leistungsstarken und nützlichen Funktionen PHP-Sprache- Unterstützung für reguläre Ausdrücke. Viele Programmierer, sowohl Anfänger als auch ziemlich erfahrene, sind von der scheinbaren Komplexität und Komplexität der Sprache für reguläre Ausdrücke eingeschüchtert. Aber ich kann Ihnen versichern – es lohnt sich. Die Verwendung regulärer Ausdrücke vereinfacht die Verarbeitung von Texten und schwach strukturierten Daten erheblich.


Reguläre Ausdrücke sind Ausdrücke, die in einer speziellen Sprache geschrieben sind.


Seien Sie nicht beunruhigt, die Sprache ist recht einfach zu verstehen. Sie benötigen lediglich Erfahrung und Übung. Ich denke, Sie sind immer wieder auf Situationen gestoßen, in denen Sie Text haben (z. B. in Microsoft Word


) und Sie müssen darin etwas Wichtiges finden. Wenn Sie genau wissen, wonach Sie suchen, ist alles ganz einfach: Suchdialog aufrufen, Suchwort eingeben, Button drücken und voilà – der Text ist gefunden. Aber was machen Sie, wenn Sie nur im Voraus wissen, nach welcher Art von Informationen Sie suchen? Sie stehen beispielsweise vor der Aufgabe, alle Adressen zu finden E-Mail

in einem Dokument von ein paar hundert Blättern. Manche sehen sich das Dokument manuell an, andere geben den Hund (@) in die Suche ein und suchen danach. Stimmen Sie zu – beide Optionen sind eine mühsame, undankbare Arbeit.

Ein regulärer Ausdruck ist eine Textzeichenfolge, die nach bestimmten Gesetzen und Regeln zusammengesetzt ist. Eine Zeichenfolge besteht aus Zeichen und Zeichengruppen, Metazeichen, Quantoren und Modifikatoren.

Unter den Symbolen in in diesem Fall Alle Symbole eines beliebigen Alphabets werden verstanden. Und nicht nur lesbare. Sie können problemlos ein unleserliches Zeichen in einen Ausdruck einfügen. Dazu müssen Sie lediglich dessen Code in hexadezimaler Form kennen. Zum Beispiel:

// lesbare Zeichen a E // unlesbare Zeichen und Codes \x41 – das Gleiche wie der Buchstabe „A“ \x09 – Tabulatorzeichen

Eine Zeichengruppe besteht aus mehreren nacheinander geschriebenen Zeichen:

Durchschn. ACZms

Ich möchte Sie gleich darauf aufmerksam machen: Auch das „Leerzeichen“ in regulären Ausdrücken wird als signifikantes Zeichen betrachtet, seien Sie also beim Schreiben von Ausdrücken vorsichtig. Diese Zeichengruppen sind beispielsweise VERSCHIEDENE Ausdrücke:

ABC WO ABC WO

Das nächste Element der Sprache sind Metazeichen. Das Präfix „meta“ bedeutet, dass diese Symbole einige andere Symbole oder deren Gruppen beschreiben. Die Tabelle beschreibt die wichtigsten Metazeichen der regulären Ausdruckssprache:

Metazeichen zur Angabe von Sonderzeichen
() Klammern. Definiert verschachtelte Ausdrücke.
| Auswahl-Metazeichen
^ Metazeichen für den Zeilenanfang
$ Metazeichen am Zeilenende
\N Zeilenvorschubzeichen (Hex-Code 0x0A)
\R Wagenrücklaufzeichen (Hex-Code 0x0D)
\T Tabulatorzeichen (Hex-Code 0x09)
\xhh Wenn Sie ein Zeichen mit dem Hexadezimalcode 0xhh einfügen, zum Beispiel \x42, wird der lateinische Buchstabe „B“ eingefügt.
Metazeichen zur Angabe von Zeichengruppen
. Punkt. Jeder Charakter.
\D Ziffer (0-9)
\D Keine Zahl (beliebiges Zeichen außer den Zeichen 0–9)
\S Leerzeichen (normalerweise Leerzeichen und Tabulator)
\S Nicht leeres Zeichen (alle außer Zeichen, die durch das Metazeichen \s identifiziert werden)
\w Ein „Wörterbuch“-Zeichen (ein Zeichen, das in Wörtern verwendet wird. Normalerweise alle Buchstaben, alle Zahlen und ein Unterstrich („_“))
\W Alle außer Zeichen, die durch das Metazeichen \w definiert sind

Die Metazeichen aus der zweiten Tabellenhälfte sind sehr leicht zu merken. „d“ – Ziffer (Ziffer), „s“ – Symbol (Symbol), „w“ – Wort (Wort). Wenn der Buchstabe groß ist, müssen Sie der Gruppenbeschreibung „NOT“ hinzufügen.

Nehmen wir zum Beispiel den Text „Das rote Trikot hat die Nummer 1812 und das grüne Trikot hat die Nummer 2009.“ Schauen wir uns Beispiele der einfachsten regulären Ausdrücke an:

\d\d\d\d – findet 1812 und 2009 \D – findet alle Buchstaben, Leerzeichen und Satzzeichen \s – findet alle Leerzeichen im Text.

Aber das Jahr in unserem Beispiel kann nicht vier-, sondern zweistellig geschrieben werden, Wörter können andere Deklinationen usw. haben. Hier können Teilmengen von Zeichen helfen, die mit eckigen Klammern angegeben werden:

Bedeutet eine beliebige Ziffer (dasselbe wie \d) – bedeutet eine gerade Ziffer – bedeutet ein beliebiges Symbol des lateinischen Alphabets (auf jeden Fall) oder eine Ziffer.

Beispielsweise findet der Ausdruck \d\d\d in der Testzeichenfolge nur 1812, nicht jedoch 2009. Dieser Ausdruck sollte wie folgt gelesen werden: „Finde alle Folgen von vier Ziffern, bei denen die letzte Ziffer 0,2,4,6 oder ist.“ 8".

Uns bleibt nur noch die Erwähnung von Quantoren und Modifikatoren.

Ein Quantor ist ein spezielles Konstrukt, das bestimmt, wie oft ein Zeichen oder eine Gruppe von Zeichen vorkommen muss. Der Quantor wird in geschweiften Klammern „()“ geschrieben. Zwei Aufnahmeformate sind möglich: Präzision und Reichweite. Das genaue Format lautet wie folgt:

Dabei ist X die Häufigkeit, mit der das vorherige Symbol oder die vorherige Gruppe wiederholt werden muss. Zum Beispiel der Ausdruck

Die zweite Form der Aufzeichnung ist die Reichweite. Aufgezeichnet als

(X, Y) // oder (,Y) // oder (X,)

Dabei ist X die minimale und Y die maximale Anzahl an Wiederholungen. Zum Beispiel:

gelesen als „zwei bis vier Ziffern hintereinander geschrieben“. Wenn eine der Grenzen nicht angegeben ist, wird keine Einschränkung angenommen. Zum Beispiel:

\w(3,) – drei oder mehr Buchstaben. \d(,5) - es gibt überhaupt keine Zahlen, oder es gibt sie, aber nicht mehr als fünf.

Quantifizierer können entweder auf ein einzelnes Zeichen oder eine Gruppe angewendet werden:

[A-Yaa-ya](1,3)

Diese Konstruktion wählt aus dem Text alle russischen Wörter mit einem, zwei oder drei Buchstaben aus (z. B. „oder“, „nicht“, „ich“, „ich gehe“ usw.).

Zusätzlich zu den geschweiften Klammern gibt es drei weitere Quantifizierer-Metazeichen: „*“ (Sternchen), „+“ (Plus) und „?“ (Frage). Sie werden in Fällen eingesetzt, in denen die minimale und maximale Anzahl der erforderlichen Wiederholungen im Voraus nicht bekannt ist. Wenn Sie beispielsweise nach E-Mail-Adressen suchen, können Sie nicht im Voraus sagen, wie viele Zeichen der Benutzername (vor „Hund“) und wie viele Zeichen der Domainname (nach „Hund“) enthalten wird.

Das Metazeichen „*“ wird als „beliebiger Betrag von Null oder mehr“ gelesen, d. h. Design

definiert eine beliebige Anzahl aufeinanderfolgender Buchstaben, einschließlich deren vollständiges Fehlen.

Das „+“-Symbol unterscheidet sich von einem Sternchen nur dadurch, dass es das Vorhandensein von mindestens einem Zeichen erfordert. Diese. Design

Entspricht jeder digitalen Sequenz mit einer oder mehreren Ziffern.

Symbol „?“ entspricht der Abwesenheit oder Anwesenheit eines einzelnen Zeichens. Diese. Design

entspricht jeder digitalen Sequenz mit einer oder zwei Ziffern.

Hier ist ein Merkmal der Antiifikatoren „*“ und „+“ als Gier zu erwähnen. Der Punkt ist, dass diese Zeichen standardmäßig der längstmöglichen Zeichenfolge entsprechen. Zum Beispiel für die Zeile „Mama hat den Rahmen gewaschen“ der Ausdruck:

Ich werde „Mama Soap Ra“ wählen, was etwas unerwartet ist, da wir erwartet hatten, dass wir „Ma“ bekommen würden. Um dieses Verhalten zu ändern, verwenden Sie das Metazeichen „?“ (Fragezeichen) wird unmittelbar nach dem Quantor geschrieben. Es schränkt den „Appetit“ von Quantifizierern ein, indem es sie dazu zwingt, die erste Übereinstimmung und nicht die längste zurückzugeben. Ändern wir nun das vorherige Beispiel:

und erhalten Sie die erforderliche Übereinstimmung „ma“.

Das letzte Element der Sprache sind Modifikatoren. Ein Modifikator ist ein Sonderzeichen, das die „System“-Parameter für die Analyse regulärer Ausdrücke definiert. Es gibt nur vier solcher Symbole, sie können entweder einzeln oder gleichzeitig verwendet werden:

ich Aktiviert den Modus ohne Berücksichtigung der Groß-/Kleinschreibung, d. h. Groß- und Kleinschreibung im Ausdruck unterscheiden sich nicht.
M Gibt an, dass der durchsuchte Text so behandelt werden soll, als ob er aus mehreren Zeilen besteht. Standardmäßig behandelt die Engine für reguläre Ausdrücke Text als einzelne Zeichenfolge, unabhängig davon, was er tatsächlich ist. Dementsprechend geben die Metazeichen „^“ und „$“ den Anfang und das Ende des gesamten Textes an. Wenn dieser Modifikator angegeben ist, geben sie jeweils den Anfang und das Ende jeder Textzeile an.
S Das Standard-Metazeichen ist „.“ enthält das Newline-Zeichen nicht in seiner Definition. Diese. Bei mehrzeiligem Text gibt der Ausdruck /.+/ nur die erste Zeile zurück, nicht wie erwartet den gesamten Text. Durch die Angabe dieses Modifikators wird diese Einschränkung aufgehoben.
U Macht alle quantitativen Metazeichen standardmäßig „nicht gierig“. In einigen Modifikationen der Sprache (insbesondere in PHP) wird anstelle von „U“ das Zeichen „g“ verwendet, was der Bedeutung besser entspricht („g“ ist die Abkürzung für das englische „greedy“, „greedy“ ).

Die Tabelle zeigt die beliebtesten und notwendigsten Beispiele für reguläre Ausdrücke. Einige davon mögen Ihnen kompliziert und umständlich erscheinen, aber wenn Sie sie genauer studieren, werden Sie sie zweifellos verstehen.

Reguläre Ausdrücke in PHP.

Um mit regulären Ausdrücken in PHP zu arbeiten, gibt es spezielle Funktionen, deren Liste kurze Beschreibung sind in der Tabelle angegeben:

int preg_match (String-Muster, String-Betreff [, Array-Matches])

Die Funktion prüft, ob der Inhalt des Betreffs mit dem Mustermuster übereinstimmt. Gibt 1 zurück, wenn Übereinstimmungen gefunden werden, andernfalls wird 0 zurückgegeben. Wenn Sie den optionalen Array-Parameter „Matches“ angeben, wird bei Ausführung der Funktion ein einzelnes Element darin eingegeben – die erste gefundene Übereinstimmung.

int preg_match_all (String-Muster, String-Betreff, Array-Matches [, int-Reihenfolge])
Die Funktion ist mit der vorherigen identisch, mit dem einzigen Unterschied, dass sie den gesamten Text durchsucht und ALLE im Matches-Array gefundenen Treffer zurückgibt.
gemischt preg_replace (gemischtes Muster, gemischte Ersetzung, gemischtes Subjekt [, int limit])
Wie seine beiden Vorgängerfunktionen sucht preg_replace nach einem Textstück, das einem Muster entspricht. Die Funktion ersetzt alle gefundenen Fragmente durch den in den Parametern angegebenen Text.
gemischt preg_replace_callback (gemischtes Muster, gemischter Rückruf, gemischtes Betreff [, int limit])
Die Funktion ist eine erweiterte Version der vorherigen. Der Hauptunterschied besteht darin, dass dieser Funktion in den Parametern der Name der Funktion übergeben wird, die den Text analysiert und Ersatztext generiert.
Array preg_split (Stringmuster, Stringsubjekt [, int limit [, int flags]])
Diese Funktion ähnelt den Funktionen explosion() und split(). Seine Besonderheit besteht darin, dass das Trennzeichen keine feste Zeichenfolge, sondern ein regulärer Ausdruck ist. Die Funktion teilt die Quelldaten in Elemente auf und platziert sie im Ausgabearray.
Array preg_grep (String-Muster, Array-Eingabe)
Die Funktion ist für die reguläre Suche in Arrays konzipiert. Für die Suche werden eine Vorlage und ein Array von Eingabedaten angegeben und ein Array zurückgegeben, das nur aus Elementen besteht, die mit der Vorlage übereinstimmen.

Die Liste der betrachteten Funktionen ist bei weitem nicht vollständig, reicht aber für einen erfolgreichen Einstieg in die Arbeit mit regulären Ausdrücken völlig aus. Wenn Sie sich für dieses Thema interessieren, lesen Sie unbedingt weiterführende Literatur (z. B. Friedls Buch „Reguläre Ausdrücke“). Darüber hinaus empfehle ich zu Schulungszwecken die Installation eines davon spezielle Programme zum Testen regulärer Ausdrücke (z. B. „PCRE“ oder „RegEx Builder“).

Beginnen wir damit, was ein regulärer Ausdruck ist. Beantworten Sie mir also diese Frage: Enthält das Wort „Test“ ein „e“? "Essen!" sagst du. Dann stelle ich Ihnen eine zweite Frage: Wie haben Sie den Buchstaben „e“ im Wort „test“ gefunden? Die Antwort liegt auf der Hand: Wir nehmen das erste Zeichen, also „t“, und vergleichen es mit dem, was wir suchen, also mit „e“. Wenn sie nicht gleich sind, nehmen wir das zweite Zeichen, also „e“, und vergleichen es mit dem, was wir suchen, also „e“. Voila! Es wurde eine Übereinstimmung gefunden. Antwort: Das Wort „test“ enthält den Buchstaben „e“.

Beantworten Sie mir jetzt noch eine Frage: Wo ist der reguläre Ausdruck in diesem Beispiel? Ich hoffe, Sie haben erraten, dass der reguläre Ausdruck hier das ist, was wir im Wort „test“ suchen. Das heißt, der Buchstabe „e“ in diesem Beispiel ist ein regulärer Ausdruck.

Wofür werden reguläre Ausdrücke in PHP verwendet? In meiner Praxis wurden beispielsweise reguläre Ausdrücke verwendet, um festzustellen, ob eine E-Mail-Adresse korrekt zusammengesetzt war. Solche Ausdrücke werden auch verwendet, um die Richtigkeit des Benutzernamens und des Passworts zu bestimmen. Mithilfe regulärer Ausdrücke können Sie die Adresse in einem Link finden und speichern. Durch die Analyse können Sie die Hauptfunktion regulärer Ausdrücke und zwei Nebenfunktionen identifizieren. Hauptfunktion, dies ist eine Suche nach Übereinstimmungen in einer Zeichenfolge. Zu den Nebenwirkungen gehört das Speichern und Ersetzen der gefundenen Übereinstimmungen.

Erster regulärer Ausdruck

Theoretisch verstehen wir, wie man das Zeichen „e“ im Wort „test“ findet, aber wie wird dies in der Praxis umgesetzt? Um reguläre Ausdrücke in PHP zu verwenden, werden normalerweise die folgenden Funktionen verwendet:

preg_match("regulärer Ausdruck (Muster)", "Variable, in der die Suche durchgeführt wird", "Variable, in der das Suchergebnis gespeichert wird (optionaler Parameter)"); - Matching-Funktion
preg_replace("regulärer Ausdruck (Muster)", "Womit soll die gefundene Übereinstimmung ersetzt werden", "Variable, in der die Ersetzung vorgenommen wird"); - Funktion ersetzen

Beginnen wir mit der Verwendung dieser Funktionen. Hier ist ein Beispiel für die Suche nach dem Zeichen „e“ im Wort „test“:

$a = "test";
if(preg_match("/e/",$a)) echo "found!!";

Der Code beschreibt die Bedingung: Wenn in der Variablen $a etwas gefunden wird, das dem Muster entspricht, wird die Meldung „gefunden!!“ angezeigt. Wie Sie vielleicht bemerkt haben, befindet sich unsere Vorlage zwischen zwei „/“. In diesem Fall symbolisiert das Symbol „/“ den Anfang und das Ende unseres Musters. Ich hoffe, das ist klar.

Das alles ist natürlich interessant ... aber unsere Vorlage ist sehr einfach, finden Sie nicht? Schließlich müssen wir selten ein Symbol in einer Variablen finden. In den meisten Fällen müssen wir viele und auch unbekannte Charaktere finden. Wie kann das sein? Stellen wir uns ein Problem und versuchen wir es zu lösen. Angenommen, wir haben eine Zeichenfolge, die aus Zahlen und einem unbekannten englischen Buchstaben besteht

Wie finde ich diesen Brief? Es könnte sich um einen beliebigen Buchstaben des englischen Alphabets handeln. Wie können Sie ihn identifizieren? Sie haben Ihre Frage selbst beantwortet, es gibt einen beliebigen Buchstaben, das heißt, er liegt im Bereich von a bis z. Sie können Bereiche in regulären Ausdrücken verwenden. Wenn wir nicht wissen, welches Zeichen wir suchen, wir aber sicher wissen, dass es sich bei diesem Zeichen um einen Buchstaben des englischen Alphabets handelt, dann sieht der Eintrag wie folgt aus:

$a = "123a321";
if(preg_match("//",$a)) echo "found!!";

Beachten Sie, dass der Bereich in „[“ „]“-Klammern eingeschlossen ist. Alles, was in diese Klammern eingeschlossen ist, wird als einzelnes Zeichen definiert. In diesem Fall reicht das Zeichen von a bis z. Wenn wir keinen Buchstaben, sondern eine Zahl finden müssen, sieht der Eintrag so aus:

$a = "abc1cba";
if(preg_match("//",$a)) echo "found!!";

Ich möchte auch darauf hinweisen, dass bei regulären Ausdrücken die Groß-/Kleinschreibung beachtet wird, sodass die Zeichen „A“ und „a“ völlig unterschiedlich sind. Um nach beiden Zeichen zu suchen, schreiben Sie folgendermaßen:

$a = "123a321";
if(preg_match("//",$a)) echo "found!!";

Es gibt auch eine Suche nach russischen Buchstaben, die auf die gleiche Weise wie bei englischen durchgeführt wird:

$a = "123×321";
if(preg_match("/[a-zA-Z]/",$a)) echo "found!!";

Metazeichen

Wir haben gelernt, wie man nach einem unbekannten Zeichen in einer Zeichenfolge sucht. Was tun, wenn wir mehrere Charaktere finden müssen? Abhilfe schaffen sogenannte Metasymbole... Angenommen, wir haben eine Zeichenfolge mit Zahlen und Buchstaben, wie können wir sie in der Vorlage beschreiben? Sie können dies tun:

Linie - 123a321
Probe -

Hmm ... die Vorlage passt tatsächlich zu unserer Zeichenfolge, und wenn sie auf Übereinstimmung überprüft wird, wird sie das lang erwartete „true“ liefern! Aber es ist eine ziemlich umständliche Aufzeichnung, finden Sie nicht?

So kürzen Sie es:

Linie - 123a321
Probe - *

Es scheint mir, dass es kürzer ist. Was ist das „*“-Symbol? Dies ist das gleiche Metasymbol. Das bedeutet, dass das von uns beschriebene Symbol (nämlich ein Symbol, das Zahlen von 0 bis 9 oder Buchstaben des englischen Alphabets von a bis z enthalten kann) unbegrenzt oder mehr als einmal wiederholt werden kann. Ja ja! Dieses Metasymbol findet eine Übereinstimmung in einer leeren Variablen, da selbst das Fehlen des von uns beschriebenen Symbols „true“ zurückgibt! Denken Sie daran

Welche anderen Metazeichen gibt es?

Beispielsweise ähnelt das Metazeichen „+“ bis auf eine kleine Ausnahme fast dem Metazeichen „*“. „*“ gibt true zurück, auch wenn kein Zeichen vorhanden ist, und „+“ prüft, ob mindestens ein Zeichen vorhanden ist. Das heißt, wenn eine Zeile mindestens ein Zeichen erfordert, verwenden Sie „+“ anstelle von „*“.

Auch das Metazeichen „?“ wird häufig verwendet. Das bedeutet, dass die Zeile nicht mehr als ein gewünschtes Zeichen enthalten darf. Lassen Sie mich einige Beispiele für die letzten beiden Metazeichen geben, die ich beschrieben habe.

Angenommen, wir müssen das Passwort des Benutzers auf Richtigkeit überprüfen. Überlegen wir mal, was das Benutzerpasswort enthalten sollte? Nun, erstens muss es mindestens ein Zeichen sein. Zweitens darf er nur Zahlen und Buchstaben des englischen Alphabets enthalten, sodass der reguläre Ausdruck so aussieht:

$a = "qwerty12345";

Welche Charaktere haben wir zugelassen? Englische Buchstaben aller Groß- und Kleinschreibung und Zahlen. Versuchen Sie nun, anstelle des Passworts eine Leerzeile zu lassen.

$a = "";
if(preg_match("/+/",$a)) echo "Das Passwort ist korrekt";

Die Meldung „Passwort ist korrekt“ wird nicht angezeigt. Warum? Weil das Metazeichen „+“ die Zeichenfolge überprüft hat, um festzustellen, ob sie mindestens ein Zeichen enthält.

Und jetzt ein kleiner Trick, werfen wir einen Blick auf unseren Gesichtsausdruck, wir haben kein, sagen wir mal, Leerzeichen darin zugelassen, oder? Fügen Sie am Ende des Passworts ein Leerzeichen ein und führen Sie es aus

$a = "qwerty12345";
if(preg_match("/+/",$a)) echo "Das Passwort ist korrekt";

Und warum sehen wir unsere Meldung über das richtige Passwort? Es ist ganz einfach... Function preg_match(); stoppt die Prüfung beim ersten Treffer. Das heißt, das Symbol „q“ passt zu dem von uns beschriebenen Muster und alles andere ist für die Funktion nicht mehr wichtig. Was sollen wir tun? So beheben Sie das Problem:

$a = "qwerty12345";
if(preg_match("/^+$/",$a)) echo "Das Passwort ist korrekt";

Indem wir am Anfang eines Ausdrucks ein „^“ und am Ende ein „$“ hinzufügen, teilen wir der Funktion mit, dass die gesamte Zeichenfolge mit dem Muster übereinstimmen muss. Wenn Sie diesen Code ausführen, wird die Meldung nicht angezeigt, da sich am Ende des Kennworts ein unzulässiges Zeichen befindet – ein Leerzeichen

Ändern Sie nun das Metazeichen „+“ in das Metazeichen „?“. Was wird Ihrer Meinung nach passieren? Korrekterweise erfolgt keine Meldung über die Richtigkeit des Passworts, da das Passwort mehr als ein Zeichen enthält. Ich hoffe, ich habe die Funktionsweise dieser drei häufig verwendeten Metazeichen richtig erklärt

Manchmal ist „nicht“ besser

Wir haben zumindest gelernt, zu überprüfen, ob das Passwort korrekt ist, und das ist gut so! Lassen Sie mich Ihnen eine andere Möglichkeit vorstellen, in einer Zeichenfolge nach etwas zu suchen. Nehmen wir an, wir müssen prüfen, ob eine Zeichenfolge keine Zahlen enthält. Wie geht das? Hier ist die Zeile:

(Ich habe diese „-_+()“-Symbole speziell darin eingeführt, damit das Leben nicht wie Honig erscheint ...) Wir könnten den folgenden Ausdruck formulieren:

Aber Sie müssen zugeben, wir wissen nicht immer, welche Zeichen in einer Zeile verwendet werden, aber wir wissen mit Sicherheit, dass darin keine Zahlen stehen sollten! Daher wäre es logischer, einfach eine Vorlage zu schreiben, die Zeilen überspringt, die keine Zahlen enthalten, und nicht solche, die „Oh mein Gott, wie viele unverständliche Zeichen!!!“ enthalten. . Hier ist ein Beispiel für einen korrekt zusammengesetzten Ausdruck für solche Probleme:

$a = "a-_+()";
if(preg_match("/^[^0-9]+$/",$a)) echo "Keine Zahlen!";

Wie haben wir das erreicht? Wir haben das Symbol eingegeben, aber!

Nun, lassen Sie es uns langsam zusammenfassen ... Ich gebe zwei Beispiele mit Erklärungen, in denen wir lernen, wie man das Suchergebnis in einer Variablen speichert und wie man die Postanschrift auf Richtigkeit überprüft

Ich habe es gesehen und gespeichert!

Mein Blog

$a = " Mein Blog";
preg_match("/ /", $a);

In unserem regulären Ausdruck haben wir alle möglichen Zeichen beschrieben, die in einem Link enthalten sein können. Ich möchte auch auf die Anführungszeichen und „/“-Zeichen in unserem Ausdruck achten. Ihnen ist ein Backslash vorangestellt. Wozu dient das? Tatsache ist, dass „/“ und das Anführungszeichen selbst Sonderzeichen sind. Und damit die Vorlage sie als gewöhnliche Symbole wahrnimmt, müssen wir sie durchleuchten. Die Bildschirmanpassung erfolgt durch das Einfügen eines Backslashs vor Sonderzeichen. Ich hoffe, es ist klar

$a = " Mein Blog";
preg_match("/ /", $a, $b);

Nun, dementsprechend ist es notwendig, einen zusätzlichen Parameter in Form der Variablen $b hinzuzufügen, in der der gefundene Link gespeichert wird. Sie müssen auch wissen, dass das Suchergebnis in einem Array platziert wird. Daher ist die Variable $b ein Array. Die gesuchten Informationen befinden sich unter Index 1. Das bedeutet, dass das Suchergebnis in der Variablen $b liegt. Lassen Sie uns das Ergebnis auf dem Bildschirm anzeigen:

$a = " Mein Blog";
preg_match("/ /", $a, $b);
echo $b;

Die richtige Adresse ist der Schlüssel zum Erfolg!

Und schließlich die Antwort auf die Frage: Ist die E-Mail korrekt? Zunächst müssen Sie herausfinden, welche Zeichen in Adressen zulässig sind. Zu den zulässigen Zeichen gehören meines Wissens nach:

  • Englische Buchstaben, Zahlen, „_“, „-“ ähm, alles scheint zu sein... Wir werden damit fortfahren.
  • Als nächstes haben wir „@“
  • Danach englische Buchstaben
  • Als nächstes Punkt
  • Und wieder englische Buchstaben...

Der reguläre Ausdruck sieht also wie folgt aus:

$a = " [email protected]";
if(preg_match("/^+@+.+$/", $a)) echo "E-Mail-Adresse ist korrekt!";
else echo „E-Mail-Adresse ist NICHT korrekt geschrieben!“;

Nun ja... ich hoffe, dass Ihnen solche Aufzeichnungen jetzt keine Angst machen und Sie sie durchaus verstehen können.

Abschließend möchte ich noch etwas sagen. Der Artikel erwies sich als umständlich und deckte gleichzeitig nur einen Teil der Möglichkeiten ab. Wenn Sie diesen Satz lesen, haben Sie ihn höchstwahrscheinlich bis zum Ende gelesen. Vielen Dank dafür

Was die Artikelserie zur Entwicklung eines CMS-Blogs betrifft, erkläre ich den ersten Teil der Serie für geschlossen!

Mit regulären Ausdrücken können Sie Sequenzen in einer Zeichenfolge finden, die einem Muster entsprechen. Mit der Vorlage „Vasya(.*)Pupkin“ können Sie beispielsweise eine Sequenz finden, wenn zwischen den Wörtern Vasya und Pupkin eine beliebige Anzahl beliebiger Zeichen stehen. Wenn wir sechs Ziffern finden müssen, schreiben wir „(6)“ (wenn zum Beispiel sechs bis acht Ziffern, dann „(6,8)“). Dadurch werden Dinge wie der Zeichensatzindikator und der erforderliche Nummernindikator getrennt:

Anstelle eines Zeichensatzes kann auch die Bezeichnung eines beliebigen Zeichens verwendet werden – ein Punkt; ein bestimmter Zeichensatz kann angegeben werden (Sequenzen werden unterstützt – die genannten „0-9“). Kann „außer“ anzeigen dieses Set

Zeichen". Die Anzahl der Zeichen wird in der offiziellen PHP-Dokumentation als „Quantifikator“ bezeichnet. Der Begriff ist bequem und birgt keine Missverständnisse. Ein Quantor kann also entweder einen bestimmten Wert haben – entweder einen festen Wert („(6)“) oder ein numerisches Intervall („(6,8)“) oder eine abstrakte „beliebige Zahl, einschließlich 0“ („( " *"), "beliebig natürliche Zahl

" - von 1 bis unendlich ("+": "document+.txt"), "entweder 0 oder 1" ("?"). Der Standardquantifizierer für diesen Zeichensatz ist eins ("document.txt").

Für eine flexiblere Suche nach Kombinationen können diese „Zeichensatz-Quantifizierer“-Verknüpfungen zu Metastrukturen zusammengefasst werden.

Wie jedes flexible Werkzeug sind reguläre Ausdrücke flexibel, aber nicht absolut: Ihr Anwendungsbereich ist begrenzt. Wenn Sie beispielsweise eine feste Zeichenfolge im Text durch eine andere, wiederum feste Zeichenfolge ersetzen müssen, verwenden Sie str_replace. PHP-Entwickler bitten Sie unter Tränen, für diesen Zweck keine komplexen Funktionen wie ereg_replace oder preg_replace zu verwenden, da bei deren Aufruf der Prozess der String-Interpretation stattfindet, was die Systemressourcen erheblich beansprucht. Leider ist dies ein beliebter Rake unter PHP-Programmieranfängern. Verwenden Sie reguläre Ausdrucksfunktionen nur, wenn Sie nicht genau wissen, um welche Zeichenfolge es sich handelt. Beispiele: Suchcode, bei dem Dienstzeichen und kurze Wörter aus der Suchzeichenfolge sowie zusätzliche Leerzeichen herausgeschnitten werden (bzw. alle Leerzeichen werden komprimiert: „+“ wird durch ein Leerzeichen ersetzt). Mit diesen Funktionen überprüfe ich die E-Mails des Benutzers, der seine Bewertung abgibt. Es gibt viel zu tun, aber es ist wichtig zu bedenken, dass reguläre Ausdrücke nicht allmächtig sind. Zum Beispiel eine komplexe Substitution in Es ist besser, sie nicht zu tun. Denn beispielsweise bedeutet die Kombination „(.*)“ in der Programmsprache das Durchsuchen aller Zeichen des Textes. Und wenn die Vorlage nicht an den Anfang oder das Ende der Zeile gebunden ist, wird die Vorlage selbst vom Programm durch den gesamten Text „verschoben“, und das Ergebnis ist eine Doppelsuche bzw. eine Suche im Quadrat. Es ist nicht schwer zu erraten, dass eine andere Kombination „(.*)“ das Durchlaufen eines Würfels usw. bedeutet. Erhöhen Sie beispielsweise 5 Kilobyte Text auf die dritte Potenz. Das Ergebnis sind 125.000.000.000 (in Worten: einhundertfünfundzwanzig Milliarden Operationen). Wenn man strikt vorgeht, wird es natürlich nicht so viele Operationen geben, sondern vier- bis achtmal weniger, aber die Reihenfolge der Zahlen selbst ist wichtig.

Zeichensatz
. Punktirgendein Charakter
[] eckige KlammernZeichenklasse („irgendeine von“). Zum Beispiel
[^] negative Zeichenklasse („any außer“)
- BindestrichSequenzbezeichnung in einer Zeichenklasse („Ziffern“)
\D Nur Zahlen
\D[^0-9] Außer Zahlen
\w Buchstaben und Zahlen
\W[^a-z0-9]Außer Buchstaben und Zahlen
\S Leerzeichen: Leerzeichen, Tabulator, Zeilenumbruch
\S[^ ] Mit Ausnahme von Leerzeichen
| (einer|anderer)An dieser Stelle kann eine der aufgeführten Optionen stehen, zum Beispiel: (Vasya|Petya|Masha). Wenn Sie nicht möchten, dass es in die Auswahl einbezogen wird, verwenden Sie (?: ...)

Verwenden Sie eine Zeichenklasse nicht, um nur eine zu kennzeichnen (anstelle von „+“ reicht „+“ vollkommen aus). Schreiben Sie keinen Punkt in die Zeichenklasse; dies ist ein beliebiges Zeichen, sonst sind andere Zeichen in der Klasse einfach überflüssig (und in negative Klasse dies führt zur Negation aller Zeichen).

Quantor

Ein Quantor kann sowohl einen bestimmten Wert als auch Grenzwerte angeben. Wenn die angegebene Zahl innerhalb der Grenzen des Quantifizierers liegt, wird davon ausgegangen, dass das Ausdrucksfragment mit der analysierten Zeichenfolge übereinstimmt. Syntax:

{ }

{ , }

Wenn Sie nur das erforderliche Minimum angeben müssen, es aber kein Maximum gibt, setzen Sie einfach ein Komma und schreiben Sie nicht die zweite Zahl: „(5,)“ („Minimum 5“). Für die am häufigsten verwendeten Quantoren gibt es spezielle Notationen:

In der Praxis werden solche Symbole häufiger verwendet als geschweifte Klammern.

Anker

Diese Zeichen müssen jeweils ganz am Anfang und ganz am Ende der Zeile stehen.

Gier Das Fragezeichen fungiert auch als Quantor-Minimierer:
.*?

Das Ergebnis des Beispiels: Greedy-Version: fetter Text [b] und hier – noch fetter zurückgegeben. Lazy-Version: fetter Text [b] und hier – noch fetter zurückgegeben

Wie Sie bereits bemerkt haben, beginnt und endet die Vorlagenzeile mit Schrägstrichen. Nach dem zweiten gibt es Parameter:

ichSuche ohne Berücksichtigung der Groß-/Kleinschreibung
M

Mehrzeilenmodus. Standardmäßig sucht PCRE nur nach Musterübereinstimmungen innerhalb einer einzelnen Zeile, und die Zeichen „^“ und „$“ stimmen nur mit dem Anfang und Ende des gesamten Textes überein.

SWenn diese Option gesetzt ist, stimmen „^“ und „$“ mit dem Anfang und Ende einzelner Zeilen überein.
Symbol „.“ (Punkt) entspricht auch Zeilenumbruch (Standard: Nein)A
Anker am Anfang des TextesE
Uerzwingt, dass das Zeichen „$“ nur mit dem Ende des Textes übereinstimmt.
Wird ignoriert, wenn Parameter m gesetzt ist.Kehrt „gierig“ für jeden Quantifizierer um (wenn auf einen Quantifizierer ein „?“ folgt, ist dieser Quantifizierer nicht mehr „gierig“).
e
  • Der Ersetzungsstring wird als PHP-Code interpretiert.
  • Funktionen zum Arbeiten mit regulären Ausdrücken preg_grep preg_match – Führt eine Übereinstimmungsprüfung durch
  • regulärer Ausdruck
  • . Diese Funktion sucht nur nach der ersten Übereinstimmung! preg_match_all preg_quote – Escapezeichen in regulären Ausdrücken.
  • Diese. fügt Schrägstriche vor allen Dienstzeichen ein (z. B. Klammern,
  • eckige Klammern
  • usw.), so dass sie wörtlich genommen werden. Wenn Sie Benutzereingaben haben und diese mit regulären Ausdrücken überprüfen, ist es besser, vorher die Dienstzeichen in der eingehenden Variablen zu maskieren
preg_replace

preg_replace_callback – Führt die Suche und Ersetzung regulärer Ausdrücke durch

preg_split

preg_grep

preg_grep-Funktion – Gibt ein Array von Vorkommen zurück, die einem Muster entsprechen

Syntax

Array preg_grep (String-Muster, Array-Eingabe [, int Flags])
preg_grep() gibt ein Array zurück, das aus den Elementen des Eingabearrays besteht, die dem angegebenen Muster entsprechen. Der Flags-Parameter kann die folgenden Werte annehmen: PREG_GREP_INVERT
Wenn dieses Flag gesetzt ist, gibt die Funktion preg_grep() diese zurück
Array-Elemente

, die nicht mit dem angegebenen Mustermuster übereinstimmen.

Das von preg_grep() zurückgegebene Ergebnis verwendet dieselben Indizes wie das ursprüngliche Datenarray. Wenn Ihnen dieses Verhalten nicht zusagt, verwenden Sie array_values() für das von preg_grep() zurückgegebene Array, um es neu zu indizieren.

Beispielcode:

preg_split

// Gibt alle Array-Elemente // zurück, die Gleitkommazahlen enthalten $fl_array = preg_grep("/^(\d+)?\.\d+$/", $array);

preg_match preg_match-Funktion – Führt einen Vergleich mit einem regulären Ausdruck durch Wenn eine Übereinstimmung angegeben ist, wird sie mit Suchergebnissen gefüllt. Das $matches-Element enthält den Teil der Zeichenfolge, der mit dem gesamten Muster übereinstimmt, $matches enthält den Teil der Zeichenfolge, der mit dem ersten Untermuster übereinstimmt, und so weiter.

Flags können die folgenden Werte annehmen:

PREG_OFFSET_CAPTURE

Die Suche erfolgt von links nach rechts, beginnend mit dem Zeilenanfang. Mit dem optionalen Offset-Parameter kann eine alternative Startposition für die Suche angegeben werden. Ein ähnliches Ergebnis kann erzielt werden, indem subject durch substr())($subject, $offset) ersetzt wird.

Die Funktion preg_match() gibt die Anzahl der gefundenen Übereinstimmungen zurück. Dies kann 0 (keine Übereinstimmungen gefunden) oder 1 sein, da preg_match() nach der ersten gefundenen Übereinstimmung nicht mehr funktioniert. Wenn Sie alle Übereinstimmungen finden oder zählen müssen, sollten Sie die Funktion preg_match_all() verwenden. Die Funktion preg_match() gibt FALSE zurück, wenn während der Ausführung Fehler auftreten.

Empfehlung: Verwenden Sie die Funktion preg_match() nicht, wenn Sie prüfen müssen, ob ein Teilstring in einem bestimmten String vorhanden ist. Verwenden Sie hierfür strpos() oder strstr(), da diese die Aufgabe viel schneller ausführen.

Beispielcode Beispielcode Beispielcode Ergebnis des Beispiels:

Der Domainname lautet: site

preg_match_all

preg_match_all-Funktion – Führt eine globale Mustersuche in einer Zeichenfolge durch

preg_split

int preg_match_all (String-Muster, String-Betreff, Array-Matches [, int Flags [, int Offset]])

Durchsucht die Zeichenfolge subject nach allen Übereinstimmungen mit dem Muster und platziert das Ergebnis in der durch die Flag-Kombination bestimmten Reihenfolge im Übereinstimmungs-Array.

Nachdem die erste Übereinstimmung gefunden wurde, werden nachfolgende Suchvorgänge nicht vom Anfang der Zeichenfolge, sondern vom Ende des zuletzt gefundenen Vorkommens durchgeführt.

Der optionale Flags-Parameter kann die folgenden Werte kombinieren (beachten Sie, dass die gleichzeitige Verwendung von PREG_PATTERN_ORDER und PREG_SET_ORDER bedeutungslos ist):

PREG_PATTERN_ORDER
Wenn dieses Flag gesetzt ist, wird das Ergebnis wie folgt sortiert: Das Element $matches enthält ein Array vollständiger Vorkommen des Musters, das Element $matches enthält ein Array aller Vorkommen des ersten Untermusters und so weiter.

Beispielcode Ergebnis des Beispiels: Beispiel: , das ist ein Test Beispiel: , das ist ein Test

Wie wir sehen können, enthält $out ein Array vollständiger Vorkommen des Musters, und das Element $out enthält ein Array von Teilzeichenfolgen, die in den Tags enthalten sind.

PREG_SET_ORDER
Wenn dieses Flag gesetzt ist, wird das Ergebnis wie folgt sortiert: Das Element $matches enthält den ersten Satz von Vorkommen, das Element $matches enthält den zweiten Satz von Vorkommen und so weiter.

Beispielcode Ergebnis des Beispiels: Beispiel: , Beispiel: Dies ist ein Test, Dies ist ein Test

In diesem Fall enthält das Array $matches den ersten Satz von Übereinstimmungen, nämlich: Das Element $matches enthält das erste Vorkommen des gesamten Musters, das Element $matches enthält das erste Vorkommen des ersten Untermusters und so weiter. Ebenso enthält das Array $matches den zweiten Satz von Übereinstimmungen usw. für jede gefundene Übereinstimmung.

PREG_OFFSET_CAPTURE
Wenn dieses Flag angegeben ist, wird für jeden gefundenen Teilstring seine Position im Quellstring angegeben. Es ist wichtig zu bedenken, dass dieses Flag das Format der zurückgegebenen Daten ändert: Jedes Vorkommen wird als Array zurückgegeben, dessen nulltes Element den gefundenen Teilstring enthält und dessen erstes Element den Offset enthält.

Falls kein Flag verwendet wird, ist der Standardwert PREG_PATTERN_ORDER.

Die Suche erfolgt von links nach rechts, beginnend mit dem Zeilenanfang. Mit dem optionalen Offset-Parameter kann eine alternative Startposition für die Suche angegeben werden. Ein ähnliches Ergebnis kann erzielt werden, indem subject durch substr())($subject, $offset) ersetzt wird.

Gibt die Anzahl der Vorkommen des gefundenen Musters zurück (kann Null sein) oder FALSE, wenn während der Ausführung Fehler aufgetreten sind.

Beispielcode Beispielcode Ergebnis des Beispiels: übereinstimmend: fetter Text Teil 1: Teil 2: fetter Text Teil 3: übereinstimmend: klick mich Teil 1: Teil 2: Klick mich Teil 3: preg_quote

preg_quote-Funktion – Escape-Zeichen in regulären Ausdrücken

preg_split

string preg_quote (string str [, string delimiter])

Die Funktion preg_quote() übernimmt die Zeichenfolge str und fügt vor jedem Sonderzeichen einen Backslash ein. Dies kann nützlich sein, wenn die Vorlage Zeichenfolgenvariablen enthält, deren Wert sich während der Ausführung des Skripts ändern kann.

Wenn der zusätzliche Trennzeichenparameter angegeben wird, wird dieser ebenfalls maskiert. Dies ist nützlich, um einen Begrenzer zu umgehen, der in PCRE-Funktionen verwendet wird. Das gebräuchlichste Trennzeichen ist das Zeichen „/“.

In regulären Ausdrücken gelten die folgenden Zeichen als Dienstzeichen: . \\ + * ? [ ^ ] $ () ( ) = !< > | :

Beispielcode Beispielcode Ergebnis des Beispiels: Dieses Buch ist *sehr* schwer zu finden. preg_replace

preg_replace-Funktion – Führt Suchen und Ersetzen mithilfe eines regulären Ausdrucks durch

preg_split

gemischt preg_replace (gemischtes Muster, gemischte Ersetzung, gemischtes Subjekt [, int limit])

Durchsucht die Zeichenfolge subject nach Musterübereinstimmungen und ersetzt diese durch replacement. Wenn der limit-Parameter angegeben ist, werden die limitierten Vorkommen der Vorlage ersetzt; Wenn limit weggelassen wird oder gleich -1 ist, werden alle Vorkommen des Musters ersetzt.

Ersetzung kann Referenzen der Form \\n oder (seit PHP 4.0.4) $n enthalten, wobei letzteres vorzuziehen ist. Jede dieser Referenzen wird durch eine Teilzeichenfolge ersetzt, die dem in Klammern eingeschlossenen n-ten Untermuster entspricht. n kann Werte von 0 bis 99 annehmen, wobei die Referenz \\0 (oder $0) einem Vorkommen des gesamten Untermusters entspricht von links nach rechts nummeriert, beginnend mit eins.

Bei der Verwendung von Platzhaltern durch Submuster-Referenzen kann es vorkommen, dass auf die Maske unmittelbar eine Zahl folgt. In diesem Fall führt eine Notation wie \\n zu einem Fehler: Ein Verweis auf das erste Untermuster, gefolgt von der Zahl 1, wird als \\11 geschrieben, was als Verweis auf das elfte Untermuster interpretiert wird. Dieses Missverständnis kann durch die Verwendung der Konstruktion \$(1)1 beseitigt werden, die einen isolierten Verweis auf das erste Untermuster gefolgt von der Ziffer 1 anzeigt.

Beispielcode

Die Ausgabe dieses Beispiels wird sein:

Wenn während der Funktionsausführung eine Musterübereinstimmung gefunden wird, wird der geänderte Subjektwert zurückgegeben, andernfalls wird der ursprüngliche Subjektwert zurückgegeben.

Die ersten drei Parameter von preg_replace() können eindimensionale Arrays sein. Falls das Array Schlüssel verwendet, werden diese bei der Verarbeitung des Arrays in der Reihenfolge verwendet, in der sie sich im Array befinden. Die Angabe der Schlüssel im Array für Muster und Ersetzung ist optional. Wenn Sie sich dafür entscheiden, Indizes zu verwenden, um die an der Ersetzung beteiligten Muster und Zeichenfolgen abzugleichen, verwenden Sie die Funktion ksort() für jedes der Arrays.

Der schwarze Bär sprang langsam über den faulen Hund.

Mit ksort() erhalten wir das gewünschte Ergebnis:

Der langsame Schwarzbär sprang über den faulen Hund.

Wenn der Subjektparameter ein Array ist, werden Mustersuche und -ersetzung für jedes seiner Elemente durchgeführt. Das zurückgegebene Ergebnis ist ebenfalls ein Array.

Wenn es sich bei den Muster- und Ersetzungsparametern um Arrays handelt, ruft preg_replace() abwechselnd ein Elementpaar aus beiden Arrays ab und verwendet sie für die Such- und Ersetzungsoperation. Wenn das Ersatzarray mehr Elemente als das Muster enthält, werden leere Zeichenfolgen verwendet, um die fehlenden Elemente zu ersetzen. Wenn „Muster“ ein Array und „Ersetzung“ eine Zeichenfolge ist, wird jedes Element des Muster-Arrays durchsucht und durch Muster ersetzt (alle Elemente des Arrays sind der Reihe nach das Muster, während die Ersetzungszeichenfolge fest bleibt). Die Option, wenn „Muster“ eine Zeichenfolge und „Ersetzung“ ein Array ist, ist nicht sinnvoll.

Der Modifikator /e ändert das Verhalten der Funktion preg_replace() so, dass der Ersetzungsparameter nach Durchführung der notwendigen Ersetzungen als PHP-Code interpretiert und erst dann zum Ersetzen verwendet wird. Seien Sie bei der Verwendung dieses Modifikators vorsichtig: Der Ersetzungsparameter muss gültigen PHP-Code enthalten, andernfalls tritt ein Syntaxfehler in der Zeile auf, die den Funktionsaufruf preg_replace() enthält.

Beispielcode: Durch mehrere Muster ersetzen

Dieses Beispiel gibt Folgendes aus:

$startDate = "27.05.1999";

Beispielcode: Verwendung des /e-Modifizierers Beispielcode: Konvertiert alle HTML-Tags in Großbuchstaben preg_replace_callback

preg_replace_callback-Funktion – Führt die Suche und Ersetzung regulärer Ausdrücke mithilfe einer Rückruffunktion durch

preg_split

gemischt preg_replace_callback (gemischtes Muster, Rückrufrückruf, gemischter Betreff [, int limit])

Das Verhalten dieser Funktion ähnelt in vielerlei Hinsicht preg_replace(), außer dass Sie anstelle des Ersetzungsparameters eine Rückruffunktion angeben müssen, der ein Array gefundener Vorkommen als Eingabeparameter übergeben wird. Das erwartete Ergebnis ist die Zeichenfolge, die ersetzt wird.

Beispielcode (.*?).")", $xml, $matches, PREG_PATTERN_ORDER);

return $matches; )

Suchen Sie nach XHTML/XML-Tags mit einem bestimmten Attributwert

Diese Funktion ist der vorherigen sehr ähnlich, außer dass Sie dem Tag das gewünschte Attribut zuweisen können. Beispielsweise können Sie leicht finden.

Funktion get_tag($attr, $value, $xml, $tag=null) ( if(is_null($tag)) $tag = "\w+"; else $tag = preg_quote($tag); $attr = preg_quote($ attr); $value = preg_quote($value); $tag_regex = "/]*$attr\s*=\s*". .*?)/" preg_match_all($tag_regex, $xml, $matches, PREG_PATTERN_ORDER); return $matches; )

Ein weiteres nützliches Tool für Webentwickler! Es ermöglicht Ihnen, hexadezimale Farbwerte zu finden/überprüfen.

$string = "#555555"; if (preg_match("/^#(?:(?:(3))(1,2))$/i", $string)) ( echo "Beispiel 6 erfolgreich."; )

Artikeltitel durchsuchen

Dieses Code-Snippet findet den Text in Tags auf einer HTML-Seite und zeigt ihn an.

$fp = fopen("http://www.catswhocode.com/blog","r"); while (!feof($fp))( $page .= fgets($fp, 4096); ) $titre = eregi("(.*)",$page,$regs); echo $regs; fclose($fp);

Analysieren von Apache-Protokollen

Die meisten Seiten laufen auf dem bekannten Apache-Webserver. Wenn Ihre Site dazu gehört, warum nicht PHP und reguläre Ausdrücke zum Parsen von Apache-Protokollen verwenden?

//Protokolle: Apache-Webserver //Erfolgreiche Zugriffe nur auf HTML-Dateien. Nützlich zum Zählen der Anzahl der Seitenaufrufe. "^((?#Client-IP oder Domänenname)S+)s+((?#Basisauthentifizierung)S+s+S+)s+[((?#Datum und Uhrzeit)[^]]+)]s+"(?: GET|POST|HEAD) ((?#file)/[^ ?]+?.html?)??((?#parameters)[^ ?]+)? HTTP/+"s+(?#Statuscode)200s+((?#übertragene Bytes)[-0-9]+)s+"((?#Referrer)[^"]*)"s+"((?#Benutzeragent )[^"]*)"$" //Protokolle: Apache-Webserver //nur 404-Fehler "^((?#Client-IP oder Domänenname)S+)s+((?#Basisauthentifizierung)S+s+S+) s+[((?#Datum und Uhrzeit)[^]]+)]s+"(?:GET|POST|HEAD) ((?#Datei)[^ ?"]+)??((?#Parameter)[ ^ ?"]+)? HTTP/+"s+(?#Statuscode)404s+((?#übertragene Bytes)[-0-9]+)s+"((?#Referrer)[^"]*)"s+"((?#Benutzeragent )[^"]*)"$"

Ersetzen Sie doppelte Anführungszeichen durch intelligente Anführungszeichen

Wenn Sie sich für Typografie begeistern, werden Sie diesen regulären Ausdruck lieben, der normale doppelte Anführungszeichen durch intelligente Anführungszeichen ersetzt. Ein ähnlicher regulärer Ausdruck wird in WordPress im Seiteninhalt verwendet.

Preg_replace("B"b([^"x84x93x94rn]+)b"B", "?1?", $text);

Umfassende Passwortüberprüfung

Dieser reguläre Ausdruck stellt sicher, dass mindestens sechs Zeichen, Zahlen, Bindestriche und Unterstriche in das Textfeld eingegeben werden.

Das Textfeld muss mindestens einen Großbuchstaben, einen Kleinbuchstaben und eine Zahl enthalten.

„A(?=[-_a-zA-Z0-9]*?)(?=[-_a-zA-Z0-9]*?)(?=[-_a-zA-Z0-9]*?) [-_a-zA-Z0-9](6,)z"

WordPress: Regulären Ausdruck verwenden, um Bilder aus einem Beitrag abzurufen

Da viele von Ihnen WordPress-Benutzer sind, benötigen Sie möglicherweise einen Code, der es Ihnen ermöglicht, alle Bilder aus dem Text eines Artikels abzurufen und anzuzeigen.

Um diesen Code zu verwenden, fügen Sie ihn einfach in eine beliebige Datei in Ihrem Theme ein.