Heim >Backend-Entwicklung >PHP-Tutorial >Ausführliche Erläuterung von Anwendungsbeispielen für reguläre PHP-Modifikatoren

Ausführliche Erläuterung von Anwendungsbeispielen für reguläre PHP-Modifikatoren

高洛峰
高洛峰Original
2017-01-09 10:23:371427Durchsuche

Die Beispiele in diesem Artikel beschreiben die Verwendung regulärer PHP-Modifikatoren. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

<?php
   //标记在整个模式之外;
   // 例://$mode="/\bis\b/U",其中U在外面;
  //修正符:i 不区分大小写的匹配;
     //如:"/abc/i"可以与abc或aBC或ABc等匹配;
  //修正符:m 将字符串视为多行,不管是那行都能匹配;
  //  例://模式为:$mode="/abc/m";
     //要匹配的字符串为:$str="bcefg5e\nabcdfe"
     //注意其中\n,换行了;abc换到了下一行;
     //$str和$mode仍可以匹配,修正符m使得多行也可匹配;
  //修正符:s 将字符串视为单行,换行符作为普通字符;
   // 例://模式为:$mode="/pr.y/";
      //要匹配字符串为:$str="pr\ny";
      //两者不可匹配; . 是除了换行以外的字符可匹配;
      //修改下模式为:$mode="/pr.y/s";
        //其中修正符s将\n视为普通字符,即不是换行;
      //最后两者可以匹配;
  //修正符:x 将模式中的空白忽略;
  //修正符:A 强制从目标字符串开头匹配;
   // 例://$mode="/abc/A";
      //可以与$str="abcsdfi"匹配,
      //不可以与$str2="sdsdabc"匹配;
      //因为$str2不是以abc开头;
  //修正符:D 如果使用$限制结尾字符,则不允许结尾有换行;
  //  例://模式为:$mode="/abc$/";
      //可以与最后有换行的$str="adshabc\n"匹配;
      //元子符$会忽略最后的换行\n;
      //如果模式为:$mode="/abc/D",
      //则不能与$str="adshabc\n"匹配,
      //修正符D限制其不可有换行;必需以abc结尾;
  //修正符:U 只匹配最近的一个字符串;不重复匹配;
  //  例:
  //   如模式为:
      $mode="/a.*c/";
      $str="abcabbbcabbbbbc" ;
      preg_match($mode,$str,$content);
      echo $content[0]; //输出:abcabbbcabbbbbc;
      //如果$mode="/a.*c/";变成$mode="/a.*c/U";
      // 则只匹配最近一个字符串,输出:abc;
//修正符:e 配合函数preg_replace()使用,
//      可以把匹配来的字符串当作正则表达式执行;
?>

Modifikator:

POSIX-kompatibler regulärer Ausdruck hat keinen Modifikator.

Mögliche Modifikatoren, die in PERL-kompatiblen regulären Ausdrücken verwendet werden (Leerzeichen und Zeilenumbrüche in den Modifikatoren werden ignoriert, andere Zeichen verursachen Fehler):

i (PCRE_CASELESS):
Ignoriert, wenn Upper und abgeglichen werden Kleinbuchstaben.

m (PCRE_MULTILINE):
Wenn dieser Modifikator festgelegt ist, stimmen der Zeilenanfang (^) und das Zeilenende ($) nicht nur mit dem Anfang und dem Ende der gesamten Zeichenfolge überein, sondern auch Passen Sie auch die darin enthaltene neue Zeile an.

s (PCRE_DOTALL):
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 (PCRE_EXTENDED):
Wenn dieser Modifikator festgelegt ist, werden Leerzeichen im Muster vollständig ignoriert, mit Ausnahme derjenigen, die maskiert sind oder innerhalb einer Zeichenklasse liegen.

e:
Wenn dieser Modifikator gesetzt ist, führt preg_replace() die normale Ersetzung der Rückreferenz in der Ersetzungszeichenfolge durch, wertet sie als PHP-Code aus und ersetzt die Suche durch ihre Ergebniszeichenfolge. Nur preg_replace() verwendet diesen Modifikator, andere PCRE-Funktionen ignorieren ihn.

A (PCRE_ANCHORED):
Wenn dieser Modifikator festgelegt ist, wird das Muster zwangsweise „verankert“, d. h. das Muster muss nur vom Anfang der Zielzeichenfolge an übereinstimmen.

D (PCRE_DOLLAR_ENDONLY):
Wenn dieser Modifikator gesetzt ist, stimmt das Zeilenende ($) im Muster nur mit dem Ende der Zielzeichenfolge überein. Wenn das letzte Zeichen ohne diese Option ein Zeilenumbruchzeichen ist, wird es ebenfalls abgeglichen. Diese Option wird ignoriert, wenn der Modifikator m gesetzt ist.

S:
Wenn ein Muster mehrmals verwendet wird, lohnt es sich, es zuerst zu analysieren, um den Abgleich zu beschleunigen. Wenn dieser Modifikator festgelegt ist, wird eine zusätzliche Analyse durchgeführt. Derzeit ist die Analyse eines Musters nur für nicht verankerte Muster sinnvoll, die kein einziges festes Startzeichen haben.

U (PCRE_UNGREEDY):
Machen Sie die Standardübereinstimmung von „?“

X (PCRE_EXTRA): Jeder Backslash im
-Muster, gefolgt von einem Buchstaben ohne besondere Bedeutung, führt zu einem Fehler, sodass diese Kombination für zukünftige Erweiterungen erhalten bleibt. Standardmäßig wird ein Backslash, gefolgt von einem Buchstaben ohne besondere Bedeutung, als der Buchstabe selbst behandelt.

u (PCRE_UTF8): Die Musterzeichenfolge
wird als UTF-8 behandelt.

Hinweis:

Mustermodifikatoren

i – ​​kann sowohl Groß- als auch Kleinbuchstaben zuordnen
M – Zeichenfolgen als mehrere Zeilen behandeln
S – Zeichenfolge als mehrere Zeilen behandeln eine einzelne Zeile und behandeln Sie Zeilenumbrüche als gewöhnliche Zeichen, sodass „.“ mit jedem Zeichen übereinstimmt
X – Leerzeichen im Muster werden ignoriert
U – Übereinstimmung mit der nächsten Zeichenfolge
e – Verwenden Sie die ersetzte Zeichenfolge als Ausdruck

Ich hoffe, dieser Artikel wird für alle hilfreich sein, die sich mit PHP-Programmierung befassen.

Ausführlichere Anwendungsbeispiele für reguläre PHP-Modifikatoren und verwandte Artikel finden Sie auf der chinesischen PHP-Website!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn