Originaltext: http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=4101636
Mit regulären Ausdrücken erzielen Sie oft das Doppelte des Ergebnisses mit halbem Aufwand. Im Folgenden finden Sie eine Syntaxzusammenfassung und eine detaillierte Einführung in PHPreguläre Ausdrücke und beziehen Sie sich darauf. Schauen wir uns zunächst zwei Sonderzeichen an: „^“ und „$“. Sie werden verwendet, um den Anfang und das Ende einer Zeichenfolge zuzuordnen „^The“: entspricht Zeichenfolgen, die mit „The“ beginnen; “of despair$“: entspricht Zeichenfolgen, die mit „of despair“ enden; 🎜>"^abc$": Entspricht Zeichenfolgen, die mit abc beginnen und mit abc enden. Tatsächlich stimmt nur abc mit überein >Sie können sehen, dass das Muster (regulärer Ausdruck
), wenn Sie die beiden von uns erwähnten Zeichen (letztes Beispiel) nicht verwenden, überall dort erscheinen kann, wo Sie es nicht sperren auf beiden Seiten
Es gibt auch mehrere Zeichen „*“, „+“ und „?“, die angeben, wie oft oder in welcher Reihenfolge ein Zeichen erscheinen kann bedeuten: „null oder mehr“, „eins oder mehr“ und „null oder eins“. Hier sind einige Beispiele:
„ab*“: entspricht der Zeichenfolge a und 0 Oder einer zusammengesetzten Zeichenfolge von mehr b („a“, „ab“, „abbb“ usw.); „ab+“: Wie oben, aber mit mindestens einem b („ab“, „abbb“. " usw.); "ab?": entspricht 0 oder einem b; "a?b+$": entspricht einem oder einer Zeichenfolge, die mit 0 endet a plus eins oder mehrere b. Sie können auch die Anzahl der in geschweiften Klammern angezeigten Zeichen begrenzen, z. B. " ab{2}": Entspricht einem a gefolgt von zwei b (nicht einem weniger) ("abb"![PHP <br>Regulärer Ausdruck<span>Syntaxzusammenfassung](http://image.codes51.com/Article/image/20151204/20151204143322_8103.%20gif)
;
"ab{2,}": mindestens zwei weitere b ("abb", "abbbb" usw.) ;
![Zusammenfassung der PHP-Syntax für reguläre Ausdrücke](http://image.codes51.com/Article/image/20151204/20151204143322_8103.gif)
![PHP<br>Regulärer Ausdruck<span>Syntaxzusammenfassung](http://image.%20codes51.com/Article/image/20151204/20151204143322_9509.gif)
.
Das sollten Sie Beachten Sie außerdem, dass Sie immer angeben müssen (d. h. „{0,2}“, nicht „{,2}“
![PHP<strong><img src=](http://image.codes51.com/Article/image/20151204/20151204143322_9509.gif)
. Ebenso müssen Sie beachten:
„*“, „+“ und „?“ sind identisch mit den folgenden drei Bereichsanmerkungen: „{0,}“, „{1,}“ und „{0,1}“.
Setzen Sie nun eine bestimmte Anzahl von Zeichen in Klammern, zum Beispiel: "a(bc)*": Entspricht a gefolgt von 0 oder "bc" "; „a(bc){1,5}“: eins bis 5 „bc.“ Es gibt auch ein Zeichen „│“, das äquivalent ist ODER-Verknüpfung: "hi│hello": entspricht Zeichenfolgen, die „hi“ oder „hello“ enthalten; "(b│cd)ef": entspricht Zeichenfolgen, die „hi“ oder „hello“ enthalten „bef“ oder „cdef“; “(a│b)*c“: Entspricht mehreren (einschließlich 0) a oder b, gefolgt von einer c -Zeichenfolge ; Ein Punkt ('.') kann alle einzelnen Zeichen darstellen: "a .[0-9]": ein a gefolgt von einem Zeichen gefolgt von eine Zahl (Strings, die einen solchen String enthalten, werden abgeglichen, diese Klammer wird in Zukunft weggelassen) "^.{3 }$": endet mit drei Zeichen Der in eckige Klammern eingeschlossene Inhalt entspricht nur einem einzelnen Zeichen
„[ab]“: entspricht einem einzelnen a oder b (dasselbe wie „a│b“); >
„[a-d]“: entspricht einem einzelnen Zeichen von „a“ bis „d“ (dasselbe wie „a│b│c│d“ „[abcd]“ hat den gleichen Effekt); >
"^[a-zA-Z]": Sucht nach Zeichenfolgen, die mit Buchstaben beginnen "[0- 9]%": Sucht nach Zeichenfolgen, die x% enthalten ", [a-zA-Z0-9]$": Entspricht Zeichenfolgen, die mit einem Komma gefolgt von einer Zahl oder einem Buchstaben enden Sie können die nicht gewünschten Zeichen auch in Klammern auflisten . Sie müssen lediglich „^“ als Anfang der Klammer verwenden (d. h. „%[^a-zA-Z] %“ entspricht einer Zeichenfolge, die zwei Prozentzeichen mit einem Nicht-Buchstaben enthält). >Um es erklären zu können, aber „^.[$()│*+?{/“ hat Sonderzeichen. Bei der Bedeutung von Zeichen müssen Sie „“ vor diesen Zeichen hinzufügen, und in PHP3 sollten Sie dies vermeiden Wenn Sie / am Anfang des Musters verwenden, sollte beispielsweise
regulärer Ausdruck
"(/$│? [0-9]+" so heißen: ereg("(//$│?[0- 9]+", $str) (Ich weiß nicht, ob PHP4 dasselbe ist) Vergessen Sie nicht: Zeichen in Klammern sind eine Ausnahme von dieser Regel – innerhalb von Klammern alle Sonderzeichen
, einschließlich (''), verlieren ihre besonderen Eigenschaften (d. h. „[*/+? {}.]“ stimmt mit Zeichenfolgen überein, die diese Zeichen enthalten: „Wenn das Liste „]“ enthält, ist es am besten, es zum ersten Zeichen in der Liste zu machen (eventuell gefolgt von „^“ danach. Wenn es „-“ enthält, ist es am besten, es an den Anfang oder am Ende zu setzen, oder).
oder der zweite Endpunkt eines Bereichs (d. h. [a-d-0-9], ein „-“ in der Mitte wird funktionieren.
Der Vollständigkeit halber sollte ich mich auf Sortiersequenzen, Zeichenklassen usw. beziehen Also auf Äquivalenzklassen. Ich möchte jedoch nicht zu sehr auf diese Aspekte eingehen und sie müssen in den folgenden Artikeln nicht behandelt werden. Weitere Informationen finden Sie in den Regex-Manpages 🎜>So erstellen Sie ein Muster, das mit der Geldbetragseingabe übereinstimmt
Okay, jetzt werden wir das Gelernte nutzen, um etwas Nützliches zu tun: Erstellen Sie ein Übereinstimmungsmuster, um zu überprüfen, ob Die Eingabeinformationen sind eine Zahl, die Geld darstellt.Wir gehen davon aus, dass es vier Möglichkeiten gibt, den Geldbetrag darzustellen: „10.000,00“ und „10.000,00“ oder ohne Dezimalteil „10.000“ und „10.000“. Beginnen wir nun mit der Erstellung dieses Zuordnungsmusters: ^[1-9][0-9]*$ Das bedeutet, dass alle Variablen mit einer Zahl ungleich 0 beginnen müssen. Das bedeutet aber auch, dass eine einzelne „0“ nicht passieren kann Der Test. Folgendes ist die Lösung: ^(0│[1-9][0-9]*)$ "Nur 0 und die nicht beginnend mit 0 Um die Zahl abzugleichen, können wir auch ein negatives Vorzeichen vor der Zahl zulassen: ^(0│-?[1-9][0-9]*)$ Das ist: „0 oder eine Zahl, die mit 0 beginnt und möglicherweise ein negatives Vorzeichen davor hat.“ Okay, okay, jetzt lasst uns weniger streng sein und den Beginn mit 0 zulassen. Jetzt lassen wir das negative Vorzeichen weg. weil Wir müssen es nicht verwenden, wenn wir Münzen darstellen. Wir geben jetzt das Muster an, das dem Dezimalteil entspricht: ^[0-9]+(/.[0-9]+) ?$ Dies bedeutet, dass die übereinstimmende Zeichenfolge mit mindestens einer arabischen Ziffer beginnen muss. Beachten Sie jedoch, dass im obigen Muster nicht „10“ und „10.2“ übereinstimmen akzeptabel. (Wissen Sie warum) ^[0-9]+(/.[0-9]{2})?$ Wir haben das angegeben Dezimalpunkt nach Es müssen zwei Dezimalstellen vorhanden sein. Wenn Sie der Meinung sind, dass dies zu hart ist, können Sie es ändern in: ^[0-9]+(/.[0-9]{1 ,2})?$ Dadurch können wir ein oder zwei Zeichen nach dem Dezimalpunkt hinzufügen, um die Lesbarkeit zu erhöhen, und können es so darstellen: ^[0-9]{1,3}(,[0-9]{3})*(/.[0-9]{1,2})?$ Vergessen Sie nicht das Pluszeichen „+“, das durch das Multiplikationszeichen „*“ ersetzt werden kann, wenn Sie die Eingabe leerer Zeichenfolgen zulassen möchten (warum?). Vergessen Sie nicht den Backslash '/ '. Fehler können in PHP-Strings auftreten (sehr häufige Fehler). Nachdem wir den String nun bestätigen können, entfernen wir jetzt alle Kommas str_replace(",", "", $money) und ändern dann den Typ Behandeln Sie es als Double und dann können wir damit mathematische Berechnungen durchführen Konstruieren Sie einen regulären Ausdruck zum Abrufen von E-Mails Okay, fahren wir fort Besprechen Sie, wie eine E-Mail-Adresse überprüft werden kann. Eine vollständige E-Mail-Adresse besteht aus drei Teilen: POP3-Benutzername (alles links von „@“), „@“, Servername (der Rest kann Buchstaben enthalten). Arabische Ziffern, Punkte ('.'), Minuszeichen ('-') und Unterstriche ('_') folgen ebenfalls dieser Regel, außer natürlich dem Unterstrich , Der Benutzername darf nicht mit einem Punkt beginnen und enden. Außerdem dürfen Sie nicht zwei aufeinanderfolgende Punkte mit mindestens einem Zeichen dazwischen haben: ^[_a-zA-Z0-9-]+$ Das Vorhandensein von Punkten ist noch nicht erlaubt: ^[_a-zA-Z0-9-]+(/.[_a-zA-Z0-9-]+)*$ Das Obige bedeutet: „Mit mindestens einem Beginn mit a.“ kanonisches Zeichen (außer . unerwartet), gefolgt von 0 oder mehr Zeichenfolgen, die mit einem Punkt beginnen. Groß- und Kleinschreibung wird nicht beachtet, daher müssen wir nicht zwei Bereiche „a-z“ und „A-Z“ angeben – nur einen: ^[_a-z0-9-]+ (/.[_a -z0-9-]+)*$ Der Servername nach ist derselbe, aber der Unterstrich wurde entfernt: ^[a-z0 -9- ]+(/.[a-z0-9-]+)*$ Fertig. Verwenden Sie nun einfach „@“, um die beiden Teile zu verbinden: ^ [_a-z0-9-]+(/.[_a-z0-9-]+)*@[a-z0-9-]+(/.[a-z0-9-]+)* $ Dies ist der vollständige E-Mail-Authentifizierungs-Matching-Modus. Sie müssen nur eregi('^[_a-z0-9-]+(/.[_a -z0 -9-]+)*@[a-z0-9-]+(/.[a-z0-9-]+)*$ ',$eamil) Finden Sie heraus, ob es so ist E-Mail Andere Verwendungen von regulären Ausdrücken
String extrahieren
ereg() und eregi() hat eine Funktion, die es Benutzern ermöglicht, einen Teil einer Zeichenfolge durch regulären Ausdruck
zu extrahieren (Informationen zur spezifischen Verwendung finden Sie im Handbuch). Wir möchten beispielsweise den Dateinamen aus Pfad/URL extrahieren – unten steht der Code Sie benötigen:
ereg("([^///]*)$", $pathOrUrl, $regs
echo $regs[1 ]); Erweiterte Ersetzungen ereg_replace() und eregi_replace() sind ebenfalls sehr nützlich: Wenn wir alle getrennten negativen Zeichen durch Kommas ersetzen möchten: ereg_replace("[ /n/r/t]+", ",", trim($str)); PHP wird häufig im Web verwendet. Hintergrund CGI-Entwicklung führt normalerweise dazu ein bestimmtes Ergebnis nach Benutzerdaten Wenn die vom Benutzer eingegebenen Daten jedoch falsch sind, kommt es zu Problemen. Beispielsweise ist jemandes Geburtstag „30. Februar“! Wie sollen wir also überprüfen, ob die Sommerferien korrekt sind? Unterstützung für reguläre Ausdrücke
wurde PHP hinzugefügt, sodass wir den Datenabgleich sehr bequem durchführen können.
2 Was ist
Regulärer Ausdruck: Einfach ausgedrückt ist
Regulärer Ausdruck eine Art von Ausdruck, der verwendet werden kann Leistungsstarkes Tool zum Musterabgleich und -austausch. Spuren von regulären Ausdrücken finden sich in fast allen Softwaretools, die auf UNIX/LINUX-Systemen basieren, wie zum Beispiel Perl- oder PHP-Skriptsprachen. Darüber hinaus bietet JavaScript, eine clientseitige Skriptsprache, auch Unterstützung für
Reguläre Ausdrücke
. Mittlerweile ist Reguläre Ausdrücke zu einem gängigen Konzept und Werkzeug geworden, das von verschiedenen technischen Mitarbeitern häufig verwendet wird. Auf einer Linux-Website steht so etwas: „Wenn Sie einen Linux-Enthusiasten fragen, was ihm am besten gefällt, wird er wahrscheinlich mit regulären Ausdrücken antworten; wenn Sie ihn fragen, was ihm gefällt gefällt mir am besten: Wovor haben Sie Angst? Abgesehen von der mühsamen Installation und Konfiguration wird er auf jeden Fall regulärer Ausdruck sagen."
Wie oben erwähnt, sehen reguläre Ausdrücke sehr kompliziert und beängstigend aus, Jinan-Website-Erstellung
http://www .geilijz.com
Was ich Ihnen sagen möchte, ist, dass die meisten PHP-Anfänger dies überspringen und weiter unten lernen. Allerdings können die regulären Ausdrücke in PHP Mustervergleiche verwenden, um passende Bedingungen zu finden um leistungsstarke Funktionen wie Zeichenfolgen zu erlernen, zu beurteilen, ob eine Zeichenfolge die Bedingungen erfüllt, oder eine bestimmte Zeichenfolge zum Ersetzen einer qualifizierten Zeichenfolge zu verwenden ... 3 Regulärer Ausdruck Die grundlegende Syntax der Formel : Ein regulärer Ausdruck ist in drei Teile unterteilt: Trennzeichen, Ausdruck und Modifikator -Trennzeichen kann ein beliebiges Zeichen außer dem sein
Sonderzeichen (z. B. „/!“ usw.) Der Ausdruck besteht aus einigen Sonderzeichen 🎜>siehe unten) und nicht-spezielle Zeichenfolgen wie „[a-z0-9_-]+@[a-z0-9_-.]+“ können mit einem einfachen Elektronen-E-Mail-Modifikator übereinstimmen, der zum Einschalten oder verwendet wird Hier ist ein Beispiel für einen vollständigen regulären Ausdruck: /hello.+?hello /is The oben regulärer Ausdruck
„/“ ist das Trennzeichen, das Zeichen zwischen den beiden „/“ ist der Ausdruck und das Zeichen nach dem zweiten „/“ Die Zeichenfolge „is“ ist der Modifikator Wenn der Ausdruck enthält Als Trennzeichen müssen Sie das Escape-Symbol „/“ verwenden, z. B. „/hello.+?//hello/is“. Das Escape-Symbol kann nicht nur als Trennzeichen, sondern auch als
verwendet werden Sonderzeichen . Alle aus Buchstaben bestehenden Sonderzeichen müssen mit „/“ maskiert werden, z. B. „/d“ steht für alle Zahlen Regulärer AusdruckSonderzeichen
:Regulärer Ausdruck Die
Sonderzeichen
werden in Metazeichen, Positionierungszeichen usw. unterteilt. Das -Metazeichen ist ein Zeichentyp mit besonderer Bedeutung im regulären Ausdruck. Wird verwendet, um die Art und Weise zu beschreiben, wie seine führenden Zeichen (d. h. die Zeichen vor Metazeichen) in der Übereinstimmung erscheinen Objekt. Metazeichen selbst sind einzelne Zeichen, aber verschiedene oder identische Metazeichen können zu großen Metazeichen kombiniert werden:
Klammern: Klammern werden verwendet, um das Objekt genau anzugeben Anzahl der Vorkommen übereinstimmender Metazeichen, zum Beispiel zeigt „/pre{1,5}/“ eine Übereinstimmung an. Das Objekt kann „pre“, „pree“, „preeeee“ sein, sodass eine Zeichenfolge von 1 bis 5 „e“ erscheint nach „pr“ oder „/pre{,5}/“ steht für etwa 0 von pre. Pluszeichen: Das „+“-Zeichen wird verwendet, um das Zeichen vor dem Metazeichen abzugleichen, das ein- oder mehrmals vorkommt. „/ac+/“ bedeutet beispielsweise, dass das übereinstimmende Objekt „act“, „account“, „acccc“ und andere Zeichenfolgen sein kann, wobei ein oder mehrere „c“ nach „a“ erscheinen. „+“ entspricht „{1,}“. Asterix: Das Zeichen „*“ wird verwendet, um das Zeichen vor dem Metazeichen abzugleichen, das null oder mehrmals vorkommt. „/ac*/“ bedeutet beispielsweise, dass das übereinstimmende Objekt „app“, „acp“, „accp“ und andere Zeichenfolgen sein kann, wobei nach „a“ kein oder mehr „c“ erscheint. „*“ entspricht „{0,}“. Fragezeichen: Das „?“-Zeichen wird verwendet, um null oder ein Vorkommen des Zeichens vor dem Metazeichen zu finden. „/ac?/“ bedeutet beispielsweise, dass das passende Objekt „a“, „acp“ oder „acwp“ sein kann. Auf diese Weise erscheint nach „a“ keine oder eine „c“-Zeichenfolge. „?“ spielt auch in
regulären Ausdrücken
eine sehr wichtige Rolle, also im „Greedy-Modus“. Es gibt zwei sehr wichtige Sonderzeichen
, nämlich „[ ]“. Sie können mit Zeichen übereinstimmen, die in „[]“ vorkommen. Beispielsweise kann „/[az]/“ mit einem einzelnen Zeichen „a“ oder „z“ übereinstimmen, wenn der obige Ausdruck in „/[a-z]/“ geändert wird. Sie können jeden einzelnen Kleinbuchstaben wie „a“, „b“ usw. zuordnen.
Wenn „^“ in „[]“ erscheint, bedeutet dies, dass dieser Ausdruck nicht mit den Zeichen übereinstimmt, die in „[]“ erscheinen, z. B. „/[^a-z]/“ stimmt nicht überein irgendein Kleinbuchstabe! Und der reguläre Ausdruck gibt mehrere Standardwerte für „[]“ an: [:alpha:]: entspricht jedem Buchstaben [ :alnum:]: Entspricht allen Buchstaben und Zahlen [:digit:]: Entspricht allen Zahlen [:space:]: Entspricht Leerzeichen [:upper:]: entspricht jedem Großbuchstaben [:lower:]: entspricht jedem Kleinbuchstaben [:punct:]: Treffer beliebiges Satzzeichen [
Ziffer:]: entspricht einer beliebigen Hexadezimalzahl Außerdem werden die folgenden Sonderzeichen mit Escapezeichen versehen. Die Bedeutung von Das Escape-Symbol „/“ lautet wie folgt: s: entspricht einem einzelnen Leerzeichen. S: entspricht allem außer einem einzelnen Leerzeichen. d: wird verwendet, um Zahlen von 0 bis 9 abzugleichen, entspricht „/[0-9]/“. w: wird verwendet, um Buchstaben, Zahlen oder Unterstriche zuzuordnen, äquivalent zu „/[a-zA-Z0-9_]/“. W: Wird verwendet, um alle Zeichen abzugleichen, die nicht mit w übereinstimmen, entspricht „/[^a-zA-Z0-9_]/“. D: wird verwendet, um alle nicht dezimalen numerischen Zeichen abzugleichen. .: Wird verwendet, um alle Zeichen außer Zeilenumbrüchen abzugleichen. Wenn sie durch den Modifikator „s“ geändert werden, kann „.“ jedes Zeichen darstellen. Mithilfe der oben genannten Sonderzeichen können leicht komplizierte Mustervergleiche ausgedrückt werden. Beispielsweise kann „//d0000/“ den obigen regulären Ausdruck verwenden, um eine Ganzzahlzeichenfolge von mehr als 10.000 und weniger als 100.000 abzugleichen. Ankerzeichen: Ankerzeichen sind eine weitere Art sehr wichtiger Zeichen in regulären Ausdrücken. Ihre Hauptfunktion besteht darin, Zeichen durch sie zu beschreiben Position innerhalb des übereinstimmenden Objekts. ^: Zeigt an, dass das passende Muster am Anfang des passenden Objekts erscheint (anders als „[]“). $: Zeigt an, dass das passende Muster am Anfang erscheint der Anfang des übereinstimmenden Objekts Das Ende von ist ein Leerzeichen: zeigt an, dass das übereinstimmende Muster an einer der beiden Grenzen zwischen dem Anfang und dem Ende erscheint „/^he/“: kann mit „he“ übereinstimmen. Zeichenfolgen, die mit Zeichen wie „Hallo“, „Height“ usw. beginnen. „/he$/“: können mit Zeichenfolgen übereinstimmen, die mit „he“ enden " Zeichen, also sie usw.; "/ he/": beginnt mit einem Leerzeichen, hat die gleiche Wirkung wie ^, entspricht der Zeichenfolge, die mit he beginnt; "/he /": endet mit einem Leerzeichen, hat die gleiche Wirkung wie $, passt auf Zeichenfolgen, die mit he enden; "/^he$/": Zeigt an, dass es nur übereinstimmt die Zeichenfolge „er“. Klammern: Regulärer Ausdruck
Zusätzlich zum Benutzerabgleich können Sie auch Klammern „()“ verwenden, um die erforderlichen Informationen aufzuzeichnen und zu speichern it , zu lesen durch den folgenden Ausdruck. Zum Beispiel:
/^([a-zA-Z0-9_-]+)@([a-zA-Z0-9_-]+)(.[a-zA-Z0- 9_ -])$/
ist der Benutzername, der die E-Mail-Adresse aufzeichnet, und die Serveradresse der E-Mail-Adresse (in der Form service@geilijz.com
oder Wenn Sie die aufgezeichnete Zeichenfolge lesen möchten, müssen Sie zum Lesen nur „Escape-Zeichen + aufgezeichnete Reihenfolge“ verwenden. Beispielsweise entspricht „/1“ dem ersten „[a-zA-Z0-9_-]+“, „/2“ entspricht dem zweiten ([a-zA-Z0-9_-]+), „/ 3“ ist die dritte (.[a-zA-Z0-9_-]). Aber in PHP ist „/“ ein Sonderzeichen, das maskiert werden muss, daher sollte „“ im PHP-Ausdruck als „//1“ geschrieben werden.
Andere Sonderzeichen:
"|": Das oder-Symbol „|“ ist das gleiche wie das oder in PHP, aber es ist nur ein „|“ von zwei in PHP A „||“! Dies bedeutet, dass es sich um ein bestimmtes Zeichen oder eine andere Zeichenfolge handeln kann. Beispielsweise kann „/abcd|dcba/“ mit „abcd“ oder „dcba“ übereinstimmen. 5 Gieriger Modus: Wie bereits erwähnt, spielt auch das Metazeichen „?“ eine wichtige Rolle, nämlich „Gieriger Modus“. Was ist mit „Modus“? Zum Beispiel möchten wir Zeichenfolgen abgleichen, die mit dem Buchstaben „a“ beginnen und mit dem Buchstaben „b“ enden, aber die abzugleichende Zeichenfolge enthält nach „a“ viele „b“. ", wie zum Beispiel „a bbbbbbbbbbbbbbbbb“, stimmt der reguläre Ausdruck
dann mit dem ersten „b“ oder dem letzten „b“ überein? Wenn Sie den Greedy-Modus verwenden, wird das letzte „b“ abgeglichen, andernfalls wird nur das erste „b“ abgeglichen.
Der Ausdruck im Greedy-Modus lautet wie folgt: /a.+?b/ /a.+b/U Die Nichtverwendung des Greedy-Modus ist wie folgt: /a.+b/ Ein Modifikator U wird oben verwendet, siehe unten für Details Teil. 6 Modifikatoren: Die Modifikatoren in regulärer Ausdruck können viele Eigenschaften des regulären Ausdrucks ändern, wodurch regulärer Ausdruck entsteht passt besser zu Ihren Anforderungen (Hinweis: Bei Modifikatoren wird die Groß-/Kleinschreibung beachtet, was bedeutet, dass „e“ nicht gleich „E“ ist). Die Modifikatoren im regulären Ausdruck lauten wie folgt: i: Wenn „i“ zum Modifikator hinzugefügt wird, hebt der reguläre Ausdruck die Groß-/Kleinschreibung auf, d. h. „ a " ist dasselbe wie „A“. m: Der standardmäßige reguläre Anfang „^“ und das Ende „$“ gelten nur für reguläre Zeichenfolgen. Wenn „m“ zum Modifikator hinzugefügt wird, beziehen sich Anfang und Ende auf jeden Teil von die Zeichenfolge. Der Anfang jeder Zeile ist „^“ und das Ende ist „$“. s: Wenn dem Modifikator „s“ hinzugefügt wird, bedeutet die Standardeinstellung „.“ dass jedes Zeichen außer dem Zeilenumbruchzeichen zu einem beliebigen Zeichen wird, einschließlich des Zeilenumbruchzeichens! x: Wenn dieser Modifikator hinzugefügt wird, werden Leerzeichen im Ausdruck ignoriert, es sei denn, sie wurden maskiert. e: Dieser Modifikator ist nur zum Ersetzen nützlich, was bedeutet, dass er als PHP-Code zum Ersetzen verwendet wird. A: Wenn dieser Modifikator verwendet wird, muss der Ausdruck der Anfang der übereinstimmenden Zeichenfolge sein. Beispielsweise entspricht „/a/A“ „abcd“. E: Im Gegensatz zu „m“ entspricht „$“ dem absoluten Ende der Zeichenfolge und nicht vor dem Zeilenumbruch. Dieser Modus ist standardmäßig aktiviert. U: Es hat die gleiche Funktion wie das Fragezeichen und wird zum Einstellen des „Greedy-Modus“ verwendet. 7 PCRE-bezogene reguläre Ausdrücke-Funktionen: PHPs Perl-kompatibler regulärer Ausdruck bietet mehrere Funktionen, die in Mustervergleiche unterteilt sind , Ersetzung und passende Nummer usw.: 1 🎜>Diese Funktion verwendet den Musterausdruck in der Zeichenfolge zum Abgleich. Wenn [regs] angegeben ist, wird die Zeichenfolge in [regs][0] aufgezeichnet, wobei [regs][1] die erste aufgezeichnete Zeichenfolge darstellt Mit Klammern „()“ stellt [regs][2] die zweite aufgezeichnete Zeichenfolge dar und so weiter. preg gibt „true“ zurück, wenn ein passendes Muster in der Zeichenfolge gefunden wird, andernfalls wird „false“ zurückgegeben.
2. preg_replace:
Funktionsformat: gemischtes preg_replace (gemischtes Muster, gemischtes Ersetzen, gemischtes Thema); Verwenden Sie diese Option, um alle Zeichenfolgen in der Zeichenfolge, die dem Ausdrucksmuster entsprechen, durch Ausdrucksersetzung zu ersetzen. Wenn die Ersetzung einige Zeichen des Musters enthalten muss, können Sie sie mit „()“ aufzeichnen. Bei der Ersetzung müssen Sie nur „/1“ zum Lesen verwenden.
3. preg_split:
Funktionsformat: array preg_split(string pattern, string subject, int [limit]);
This Die Funktion ist dieselbe wie die Funktion „split“. Der einzige Unterschied besteht darin, dass „split“ einen einfachen
regulären Ausdruck verwenden kann, um passende Zeichenfolgen aufzuteilen, während preg_split einen vollständig Perl-kompatiblen
regulären Ausdruck
verwendet. Der dritte Parametergrenzwert gibt an, wie viele qualifizierte Werte zurückgegeben werden dürfen. 4. preg_grep: Funktionsformat: Array preg_grep(String-Muster, Array-Eingabe); Diese Funktion ist grundsätzlich dieselbe wie preg_match. oben, aber preg_grep kann alle Elemente in der angegebenen Array-Eingabe abgleichen und ein neues Array zurückgeben.
Das Folgende ist ein Beispiel. Wir möchten beispielsweise überprüfen, ob das Format der E-Mail-Adresse korrekt ist:
Kopieren Sie den Code wie folgt:
function emailIsRight($email) {
if (preg_match("^[_/.0-9a-z -]+@([0- 9a-z][0-9a-z-]+/.)+[a-z]{2,3}$",$email)) {
return 1;
}
return 0;
if(emailIsRight('y10k @963.net')) echo 'Richtig
'; if(!emailIsRight('y10k@fffff')) echo 'Falsch
';
?> ; Das obige Programm gibt „Richtig
Falsch“ aus.8. Der Unterschied zwischen Perl-Kompatibilität in PHP regulärer Ausdruck und Perl/Eregregulärer Ausdruck: Obwohl es heißt „Perl-kompatibler Regulärer Ausdruck“, im Vergleich zu Perls Regulärer Ausdruck weist PHP immer noch einige Unterschiede auf. Beispielsweise repräsentiert der Modifikator „G“ alle in Perl, aber da Dieser Modifikator wird in PHP nicht unterstützt. Es gibt auch einen Unterschied zur Ereg-Funktionsreihe. Ereg ist ebenfalls eine Funktion für reguläre Ausdrücke, die jedoch viel schwächer als Preg ist. 1. Separatoren und Modifikatoren sind in Ereg nicht erforderlich und können nicht verwendet werden, daher ist die Funktion von Ereg viel schwächer als die von Preg. 2. Über „.“: Der Punkt in regulären Ausdrücken besteht normalerweise aus allen Zeichen außer Zeilenumbrüchen, aber „.“ in Ereg ist jedes Zeichen, einschließlich Zeilenumbrüchen! Wenn Sie möchten, dass „.“ Zeilenumbrüche in preg einschließt, können Sie dem Modifikator „s“ hinzufügen. 3. Ereg verwendet standardmäßig den Greedy-Modus und kann nicht geändert werden. Dies führt zu Problemen bei vielen Ersetzungen und Zuordnungen. 4. Geschwindigkeit: Dies ist möglicherweise eine Frage, die viele Menschen beschäftigt. Steht die leistungsstarke Funktion von Preg im Austausch gegen Geschwindigkeit? Keine Sorge, Preg ist viel schneller als Ereg. Ich habe einen Programmtest gemacht: Zeittest: PHP-Code: Kopieren Sie den Code wie folgt:
echo "
reg_replace
verwendete Zeit:";
$start = time();
for($i=1;$i
$str = "sssssssssssssssssssss";
preg_replace("/s/","",$str);
}
$ended = time()-$start;
echo $ended;
echo "
ereg_replace verwendete Zeit:";
$start = time();
for($i=1;$i
$str = "sssssssssssssssssssss";
ereg_replace("s","",$str);
}
$ended = time()-$start;
echo $ended;
echo "
str_replace used time :";
$start = time();
for($i=1;$i
$str = "ssssssssssssssssssssss";
str_replace("s","",$str);
}
$ended = time()-$start;
echo $ended;
Ergebnis:
Preg_replace verwendete Zeit:5
ereg_replace verwendete Zeit:15
str_replace verwendete Zeit:2
str_replace Da kein Abgleich erforderlich ist, ist es sehr schnell und preg_replace ist viel schneller als ereg_replace
9. Informationen zur PHP3.0-Unterstützung für preg:
Preg-Unterstützung wurde hinzugefügt standardmäßig in PHP 4.0, aber nicht in 3.0. Wenn Sie die Preg-Funktion in 3.0 verwenden möchten, müssen Sie die Datei php3_pcre.dll laden. Fügen Sie einfach „extension = php3_pcre.dll“ zum Erweiterungsabschnitt von php.ini hinzu und starten Sie dann PHP neu!
Tatsächlich wird regulärer Ausdruck
auch häufig in der Implementierung von UbbCode verwendet. Viele PHP-Foren haben diese Methode verwendet, aber der spezifische Code ist relativ lang.
Oben wurde eine Zusammenfassung der PHP-Syntax für reguläre Ausdrücke vorgestellt, einschließlich Sonderzeichen und regulärer Ausdrücke. Ich hoffe, dass sie für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.