Regulärer Ausdruck (Regex) mit PHP

Reguläre Ausdrücke (Regex) Türkisch ist ein Programm, das eine formale Sprache in Texten verwendet, um die beschriebenen Teile auszuwählen und voneinander zu trennen.

Regex wird in fast allen Programmiersprachen verwendet, sodass Sie auf alles zugreifen können, was Sie im Text analysieren möchten.

Zum Beispiel werden heutzutage die meisten Inhalte beim Spielen von Bots verwendet. Sie können es aber auch verwenden, um die Textreihenfolge anzugeben oder auf die gesuchten Phrasen im Text zuzugreifen und diese zu bearbeiten.

In diesem Artikel werde ich zunächst ein paar nützliche Websites zum Testen von Regex-Mustern freigeben, dann die grundlegenden Anforderungen erfüllen und versuchen, über die am häufigsten verwendeten Regex-Muster und ihre Verwendung in PHP zu sprechen.

Eintrag
Um mit den Mustern experimentieren zu können, die ich im gesamten Artikel zeigen werde, sollten Sie in der Lage sein, sofortige Vorgänge durchzuführen und Ihre Lesezeichen hinzuzufügen, die in jedem Register des Browsers in jedem regulären Ausdruck geöffnet sein sollten.

Regex101 (Meine Favoriten)
Rubular,
Gethifi Regexp Tool
regex
Öffnen Sie eine, die uns gefällt und erhalten Sie einen besseren Griff, indem Sie mit den angegebenen Beispielen experimentieren.

Suche nach einem Wort
Regex kann mit dem einfachsten Verfahren für die Suche nach Wörtern ausgeführt werden. Es reicht aus, das Wort, das wir aufrufen möchten, direkt zu schreiben. Wir schreiben zum Beispiel Äpfel uz zu unserer regulären Erklärung. Und wir können sehen, dass die Wörter Apfel gewählt wurden.

Beispiel für einen regulären Ausdruck:

Äpfel

Text und Ergebnis:

Dies ist ein Text, der geschrieben wurde, um den Apfel nach innen zu übergeben.

Das oben in Gelb angegebene Wort ist ein Hinweis auf das Wort, das von unserem Ausdruck erfasst wird. Ich zeige Ihnen die Ergebnisse, die wir in den folgenden Beispielen erzielt haben.

Sonderzeichen
Reguläre Ausdrücke enthalten Sonderzeichen, die viel Bedeutung und Ausdruck enthalten. Wir wollen das tun, was wir mit dem gewünschten Ergebnis ausdrücken wollen. Schauen wir uns zuerst an, was diese Zeichen sind, und probieren Sie die Beispiele, wie sie verwendet werden.

Sonderzeichen, die in regulären Ausdrücken verwendet werden:

Zeichen Beschreibung
d bezieht sich auf eine beliebige Zahl
. Gibt jedes Zeichen außer der Beförderung aus
w Geben Sie einen Buchstaben, eine Zahl oder einen Index ein
s bezieht sich auf unsichtbare Zeichen und Leerzeichen. (Leerzeichen, Tabulator, Wagenrücklauf)
^ Bezieht sich auf den Anfang
$ Bezieht sich auf das Ende
* Die Figur vor sich selbst geschrieben;
Null oder mehr Wiederholung
+ Die vor ihm geschriebene Figur;
bezieht sich auf eine oder mehrere Wiederholungen
? Die Figur vor sich selbst geschrieben;
ausdrücken
{123} Das Zeichen, das vor sich selbst geschrieben wird.
Klammer
{1, 2} Das vor ihm geschriebene Zeichen;
drückt die Wiederholung zwischen zwei Zahlen in Klammern aus
(Aya) Kann verwendet werden, um in Klammern geschriebene Ausdrücke zu gruppieren
(Ifade | eşleş) Bezeichnet den Bindestrich ile | ve in Klammern oder einen der Ausdrücke, die in den Bindestrich geschrieben und eingeschlossen sind
[Ifade] Stellt eines der Zeichen in eckigen Klammern dar
Der Fluchtcharakter Wenn wir die oben geschriebenen Zeichen normal schreiben möchten, setzen wir das Escape-Zeichen auf den Kopf. Zum Beispiel, um den Punkt auszudrücken.
D bezieht sich auf jedes Zeichen, das keine Ziffern enthält
S bezieht sich auf das unsichtbare und nicht-leere Zeichen
W Letter bezieht sich auf ein nicht getrenntes Zeichen
b Bezieht sich auf den Anfang oder das Ende des Wortes
[^ Leri] Bezieht sich auf andere Zeichen als auf drei Punkte geschriebene Zeichen
[a-z] bezieht sich auf einen Buchstaben von A bis Z



Regex-Einstellungen
Regex-Muster werden zwischen zwei (geteilt) Zeichen geschrieben. Regex-Einstellzeichen werden optional nach dem letzten Schrägstrich eingegeben.

Einstellungskarten:

Zeichen Beschreibung
i Unempfindlich gegen Großbuchstaben
g Stoppt nicht beim anfänglichen Mapping, führt umfangreiche Scans durch
s Erlaubt das Punktzeichen, das alles außer dem Wagen darstellt, zum Wagenrücklauf.
Erlaubt m ^ und $ Zeichen, den Anfang und das Ende jeder Zeile auszudrücken
Verwendungsbeispiel:

1
/ Apple / i
In diesem Beispiel werden der große Apfel, der kleine Apfel oder die ElMa in Form der Großbuchstaben ignoriert.

Das obige Beispiel findet „unendliche Äpfel“ in Wörtern wie Selma und Diamant. Wenn wir nur nach dem Wort Apfel suchen möchten, verwenden wir b, um den Anfang und das Ende des Wortes auszudrücken.

1
/ Belmab / g
Jetzt werden wir nur noch das Wort Apfel, Selma, Diamanten finden, wie andere Äpfel die Wörter nicht fangen können.

Zahlen fangen
Lassen Sie uns nun das Beispiel der in der obigen Tabelle aufgelisteten Zeichen verwenden. Wir verwenden die Bulmak-Zeichen "d" und "+", um nur Zahlen im eingegebenen Inhalt zu finden.

1
/ D + / g
Dieses Beispiel stimmt nur mit 1234, 321 789 Nummern überein. Nicht nur einmal mit der Einstellung et g ın, sondern auch mit der umfassenden Suche

Wir haben eine Schrift geschrieben, die „eine beliebige Anzahl von“ + herhangi-Zeichen darstellt, die eine oder mehrere Wiederholungen darstellen. Für ein nützlicheres Beispiel erfassen wir den Ausdruck im Datumsformat im eingegebenen Inhalt.

1
/(d{2}.d{2}.d{4})/g
Erschrecken Sie nicht den Ausdruck des Ausdrucks, den Sie betrachten. Sie können zusammenfassen, was für Sie bequemer ist, wenn Sie die relevanten Stellen herausnehmen. d {2} 2 gefolgt von. Escape-Zeichen mit dem Punkt, dem letzten Teil der 4 Ziffern, die wir ausgedrückt haben. So wird es zum 10.08.2013 zum Inhalt passen.


Wörter fangen
Mit dem obigen Beispiel können wir dies mit einem ähnlichen Ausdruck tun.

1
/ (W +) / g
Wir haben gesagt, dass wir jeden Buchstaben ausdrücken, aber Sie müssen wissen, dass türkische Zeichen die Ausnahme für diesen Ausdruck sind. Wenn wir auf Türkisch arbeiten, sollte der Ausdruck wie folgt sein:

1
/ ([A-Za-zçşğüöiçşğüö of] +) / g
Mit diesem Satz können wir türkische Wörter erfassen

Wir fügten kleine und große Buchstaben hinzu, die auf Türkisch von klein bis groß sind. Als weiteres Beispiel versuchen wir einfach, ein gewünschtes Wort aus dem Inhalt zu erhalten.

1
/ mein name ist (w +) / gi
Hi, ich heiße Moses!

Capture von Anfang und Ende
Mit den Zeichen ^ und $ können wir beschreiben, wie der Anfang oder das Ende davon aussehen würde. Versuchen wir beispielsweise, Inhalte zu extrahieren, die mit einer Begrüßung beginnen.

1
/ ^ Hallo /
Dieser Beispieltext beginnt nicht mit Begrüßungen und stimmt mit nichts überein

hallo! Dieses Beispiel wird für mehr Intimität passen

Ein weiteres Beispiel, das mit dem Gruß beginnt und mit dem Abschied endet.

1
/^selam(.+)hoşçakal$/
hallo hier wird auf wiedersehen gefangen

Verwenden von regulären Ausdrücken mit PHP
Verwenden Sie diese nützlichen Operationen für PHP. Dazu werden wir einige nützliche Funktionen kennenlernen.

Prüfen Sie, ob der Ausdruck übereinstimmt
Mit der Funktion preg_match können wir überprüfen, ob der eingegebene Ausdruck nicht mit dem von uns bereitgestellten Inhalt übereinstimmt. In dem Beispiel überprüfen wir, ob der Eintrag ein gültiges Zeitformat ist.


$ pattern = '/ ^ ([01] [0-9] | [2] [0-3]): [0-5] [0-9]: [0-5] [0-9] $ /' ;
$ content = '23: 15: 59 ';

if (preg_match ($ pattern, $ content))
{
    Echo 'Eine korrekte Zeit wurde eingegeben';
}
sonst
{
    echo 'Es wurde ein falsches Zeitformat eingegeben';
}

Wenn der Ausdruck mit dem Text übereinstimmt, gibt true den Wert false zurück.

Wenn Sie neugierig auf die Beschreibung unserer Erklärung sind;
Zunächst einmal haben wir den Kopf des Textes ausgedrückt, das heißt, genau so, wie wir wollen, dass er beginnt. Am Ende verwendeten wir $, um nach einem Inhalt zu suchen, der genau den Anfang und das Ende hat, das wir wollten.

Dann gruppierten wir ([01] [0-9] | [2] [0-3]) 2 Anweisungen. Weil die Zeit zwischen 01 und 19 oder zwischen 20 und 23 Stunden liegen kann. Wenn [0-9] {2} in Form einer Zahl zwischen 0 und 9 mit 2 Zahlen vorliegt, stimmen wir mit den Zahlen größer als 23 überein, z. B. 99.

Erhalten Sie erfassten Inhalt
In regulären Ausdrücken schreiben wir die Ausdrücke der Inhalte, die wir erfassen möchten, und trennen sie in Klammern. Auf die Inhalte, die mit den in Klammern geschriebenen Ausdrücken übereinstimmen, greifen wir über die Funktion preg_match_all zu. Diese Funktion enthält die Einstellung "g ayar", mit der Sie den gesamten Inhalt scannen können, sodass Sie bei der Verwendung von preg_match_all nicht "g" (global) eingeben müssen.

Ich denke, neben theoretischem Wissen und Beispielen werden wir in der Lage sein, ein wenig mehr im wirklichen Leben zu begreifen. Um den Titel des Site-Titelcodes aus dem Ski-Code einer Site zu erfassen, können wir einen Ausdruck schreiben.


$ pattern = '/<title>(.+)</title>/i';
$ content = file_get_contents ('// www.phpr.org');

preg_match_all ($ pattern, $ content, $ results);

print_r ($ results);
Die Bildschirmausgabe sieht wie folgt aus:


Feld
(
    [0] => Array
        (
            [0] => <title> PHP-Abenteuer - PHP-Tutorials, PHP-Beispiele, PHP-Codes </ title>
        )

    [1] => Array
        (
            [0] => PHP-Abenteuer - PHP-Tutorials, PHP-Beispiele, PHP-Codes
        )
)
Das erste Element des Arrays in der Variablen "$ results"; Gibt ein Array von Inhalten zurück, die dem eingegebenen Ausdruck entsprechen. Die nächsten Elemente enthalten ein Array mit Inhalten, die den Ausdrücken entsprechen, die wir mit Klammern gruppiert haben. Was wir also wirklich brauchen, ist, die Zeichen, die wir in die Klammern zwischen den Titel-Tags bekommen, an das zweite Element heranzuführen.

Im zweiten Element wird es eine Reihe von ihnen geben, dh, wenn es mehr als einen Treffer gibt, werden sie der Reihe nach gegeben.

Ändern Sie den Inhalt mit regulären Ausdrücken
Erklären wir es mit einem nützlichen Beispiel. Lassen Sie uns die in Klartext geschriebenen URLs im HTML-Format im HTML-Format verlinken. Dazu benötigen Sie zunächst ein Muster, um eine URL auszudrücken. Ich habe eines der Beispiele im Internet ausgewählt, die anderen können Sie hier anschauen. In den Ausdrücken, die mit der Funktion preg_replace übereinstimmen, können wir die Ausdrücke, die wir in Klammern gruppieren, nach Belieben ändern.


// Mustererfassungs-URLs
$ pattern = '(https: // (([a-zA-Z0-9] ([a-zA-Z0-9-] {0,61} [a-zA-Z0-9])?) + [a-zA-Z] {2,6} / [^ bs] +)?);

$ content = 'Weitere PHP-Abenteuer finden Sie unter //www.phpr.org';

$ replace = '<a href="$0"> $ 1 </a>';

echo preg_replace ($ pattern, $ replace, $ content);
Der Bildschirm ist ein Link zu der URL, die wir im Klartext geschrieben haben.

Weitere PHP-Abenteuer finden Sie unter www.phpr.org

Mehr
Ausdrucksgruppen nicht abfangen
Ich habe oben gesagt, dass wir in den Aussagen, die wir erfassen wollen, Klammern brauchen. Aber wir wollen vielleicht nicht jede Klammer fangen. Hierfür können Klammern (?: ...) verwendet werden.

Daher wird der von dieser Abstammung erfasste Inhalt nur verwendet, wenn er ausgeführt wird, nicht das Endergebnis.

/(w+@w+(?:.w+)+)/
Wir haben zwei Gruppen in dem Muster, das die E-Mail-Adresse darstellt, aber wir müssen die Gruppe nicht in die Liste aufnehmen. Wenn wir die Anweisung ausführen, haben wir ein Array, das nur die E-Mail-Adressen angibt.

Ausdrucksgruppen benennen
In dem obigen Beispiel haben wir keine unnötigen Klammern verwendet und das Ergebnis etwas gestrafft. Jetzt können wir dieser Gruppe mehr Namen geben, indem wir die Reihenfolge angeben.

Sie können groups / (? <Gruppenname> Ausdruck) / benennen.


$ pattern = '/(?<email>w+@w+(?:.w+) +) & i';
$ content = 'Einige Adressen: elma@manav.com, yarimkilo@kasap.com, ates@askeriye.com';

preg_match_all ($ pattern, $ content, $ results);

print_r ($ results [ 'E-Mail']);

Feld
(
    [0] => apple@manav.com
    [1] => yarimkilo@kasap.com
    [2] => ates@askeriye.com
)
Wir können die Inhalte der Gruppe erreichen, die wir direkt benannt haben, ohne zu versuchen, welches der Serienelemente ich brauche.


Wetter
Wieder ein praktisches Beispiel mit der meteorologischen Stätte von Istanbul, um ein Muster zu erfassen, das das tägliche Wetter erfasst. Der Trick dieser Art von Arbeit besteht darin, die einzigartigen Muster zu sehen, die den Inhalt umgeben, nach dem wir suchen.

Tägliche Wettervorhersage für Istanbul;
http://www.mgm.gov.tr/tahmin/il-ve-ilceler.aspx?m=ıstanbul

Wir öffnen den Quellcode der Seite und schauen uns an, nach welchen HTML-Tags wir suchen.


$ content = file_get_contents ('http://www.mgm.gov.tr/tahmin/il-ve-ilceler.aspx?m=ISTANBUL');

// Grad
preg_match_all ('/ <em class = "colorMin zemimeZ"> (. +) C </ em> </ td> / si', $ content, $ results);
// Erstes Spiel
$ grad = $ Ergebnisse [1] [0];

// Wettersymbol und Beschreibung
preg_match_all ('/ "(+ [w? s]]))" rowspan = "2"> <img src = ".. (w /. - )+)"/ si', $ content, $ results);
$ description = $ Ergebnisse [1] [0];
$ image = 'http://www.mgm.gov.tr'. $ results [2] [0];

echo $ grad. ''. $ Beschreibung;
echo '<img src = "'. $ image. '" />';
Wir sehen das Wetter auf dem Bildschirm.

Wir fangen gerade erst an
Ich schlage vor, Sie besprechen die folgenden nützlichen Ressourcen.

ich regexlib.co
Wikipedia
regular-expressions.info
30 Minuten Regex-Lehren
30 nützliche Tools für Regex
Ich werde in Zukunft weitere Beispiele hinzufügen, wenn ich die Chance bekomme, aber vorerst. Es ist lange her, aber ich denke, du wirst es nutzen, wo immer du hingehst. Ich habe viel Neues beim Schreiben gelernt, also danke ich Ihnen.
(siehe Win Boiler)

Zögern Sie nicht, zu fragen, was Sie fragen möchten, oder fragen Sie mich zu dem Thema, indem Sie einen Kommentar schreiben.

Kommentare

Beliebte Posts aus diesem Blog

Warum einen Blog schreiben?

Ist es PHP oder ASP.NET?