Heim > Artikel > Backend-Entwicklung > Eine kurze Diskussion darüber, welche Details i, m, s, x und e in regulären PHP-Ausdrücken darstellen
Der folgende Editor vermittelt Ihnen ein Klischee darüber, was i, m, s, x und e in regulären PHP-Ausdrücken jeweils darstellen. Der Herausgeber findet es ziemlich gut, deshalb werde ich es jetzt mit Ihnen teilen und es allen als Referenz geben. Folgen wir dem Editor, um
I
zu sehen. Wenn dieses Korrekturzeichen eingestellt ist, stimmen die Zeichen im Modus gleichzeitig mit den Kleinbuchstaben überein.
m
Wenn dieser Modifikator festgelegt ist, stimmen „Zeilenanfang“ und „Zeilenende“ mit dem Anfang und dem Ende der gesamten Zeichenfolge überein nach und vor Zeilenumbrüchen.
s
Wenn dieser Modifikator festgelegt ist, entspricht das Punkt-Metazeichen (.) im Muster allen Zeichen, einschließlich Zeilenumbrüchen. Ohne diese Einstellung werden keine Zeilenumbrüche berücksichtigt.
x
Wenn dieser Modifikator festgelegt ist, werden Leerzeichen im Muster vollständig ignoriert, es sei denn, sie sind maskiert oder innerhalb einer Zeichenklasse, alle Zeichen zwischen # außerhalb der Zeichenklasse ohne Escapezeichen und das nächste Zeilenumbruchzeichen (einschließlich) werden ebenfalls ignoriert.
e
Wenn dieser Modifikator gesetzt ist, behandelt preg_replace() Rückverweise normal in der Ersetzungszeichenfolge Ersetzen,
? nach . + und *, um eine nicht gierige Übereinstimmung anzuzeigen: Die Qualifikationsmerkmale *, + und ? sind alle gierig, da sie nur mit einem nach ihnen übereinstimmen Mindestübereinstimmung.
Zum Beispiel:
<?php $string = "上飞机离开我<img border='0' alt='' src='/uploadfile/2009/0921/20090921091612567.jpg' border='0' />sdfsdf"; $su = preg_match("/ \<[ ]*img.*src[ ]*\=[ ]*[\"|\'](.+?)[\"|\'] /", $string,$match); // 匹配src=的内容 print_r($match[1]); // 输出 /uploadfile/2009/0921/20090921091612567.jpg $su = preg_match("/ \<[ ]*img.*src[ ]*\=[ ]*[\"|\'](.+)[\"|\'] /", $string,$match); print_r($match[1]); // 输出 /uploadfile/2009/0921/20090921091612567.jpg' border=' ?>
Beispiel: (?i):
(?i) bedeutet interner Modifikator in PHP, i bedeutet ohne Berücksichtigung der Groß-/Kleinschreibung
Andere Modifikatoren umfassen x, m, s, U usw. . Es ist derselbe Mustermodifikator, den wir verwendet haben.
Der Unterschied besteht darin, dass es innerhalb des Musters verwendet wird. Es funktioniert nur innerhalb des Untermusters, in dem sich (?i)
befindet, wie z. B.
ccc(a(?i))bcd 匹配 cccabcd和cccAbcd
und a(?i)bc dasselbe ist wie abc plus dem i-Modifikator. Das Gleiche gilt, weil (?i) auf das gesamte Muster
Rückverweise
wirkt Die zugehörigen Übereinstimmungen werden in einem temporären Puffer gespeichert. Jede erfasste Teilübereinstimmung wird so gespeichert, wie sie im Muster des regulären Ausdrucks von links nach rechts auftritt. Die Puffer, in denen Teilübereinstimmungen gespeichert werden, sind beginnend bei 1 und fortlaufend bis zu einem Maximum von 99 Teilausdrücken nummeriert. Auf jeden Puffer kann mit „n“ zugegriffen werden, wobei n eine ein- oder zweistellige Dezimalzahl ist, die einen bestimmten Puffer identifiziert.
Die nicht erfassenden Metazeichen „?:“, „?=“ oder „?!“ können verwendet werden, um die Beibehaltung verwandter Übereinstimmungen zu ignorieren.
Das Obige ist eine kurze Diskussion darüber, was i, m, s, x und e in regulären PHP-Ausdrücken darstellen. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn). !