Dieser Artikel teilt Ihnen hauptsächlich die Gründe und Lösungen für das Scheitern der regulären PHP-Übereinstimmung aller Zeichen mit. Ich hoffe, dass er allen helfen kann.
<?php$str = ' @@@@i ( PCRE_CASELESS) 如果设置了这个修饰符,模式中的字母会进行大小写不敏感匹配。@@@@ m ( PCRE_MULTILINE)';// 正则1:$preg = '/@@@@(.*)@@@@/'; 无法匹配换行符\n// 正则2:$preg = '/@@@@(.*)@@@@/s';// \s 匹配任意一个空白符,等价于[\f\n\r\t\v]// \S 匹配除空白符以外任何字符,等价于[^\f\n\r\t\v]preg_match_all( $preg, $str, $matches); print_r($matches);// 结果1:Array( [0] => Array() [1] => Array() )// 结果2:Array( [0] => Array ( [0] => @@@@i ( PCRE_CASELESS) 如果设置了这个修饰符,模式中的字母会进行大小写不敏感匹配。@@@@ ) [1] => Array ( [0] => i ( PCRE_CASELESS) 如果设置了这个修饰符,模式中的字母会进行大小写不敏感匹配。 ) )
i: Wenn dieser Modifikator festgelegt ist, werden Buchstaben im Muster ohne Berücksichtigung der Groß- und Kleinschreibung abgeglichen.
m: Standardmäßig geht PCRE davon aus, dass die Zielzeichenfolge aus einer einzelnen Zeichenzeile besteht (tatsächlich kann sie jedoch mehrere Zeilen enthalten), das Metazeichen „Zeilenanfang“ (^) stimmt nur mit dem Anfang überein der Zeichenfolge und das Metazeichen „Zeilenende“ (
, das Setzen dieses Modifikators hat keine Auswirkung.
s: Wenn dieser Modifikator festgelegt ist, entspricht das Punkt-Metazeichen im Muster allen Zeichen, einschließlich Zeilenumbrüchen. Ohne diesen Modifikator entspricht dieser Modifikator dem Modifikator /s in Perl. Eine negierte Zeichenklasse wie [^a] entspricht immer einem Zeilenumbruchzeichen, unabhängig von der Einstellung dieses Modifikators. x: Wenn dieser Modifikator festgelegt ist, werden Leerzeichen im Muster angezeigt die nicht maskiert sind oder sich nicht in einer Zeichenklasse befinden, werden immer ignoriert und stehen zwischen einem nicht maskierten #-Zeichen außerhalb einer Zeichenklasse und dem nächsten Zeilenumbruchzeichen. Dieser Modifikator entspricht dem /x-Modifikator in Perl und ermöglicht dies Das kompilierte Muster soll Kommentare enthalten. Hinweis: Dies gilt nur für Datenzeichen, die weiterhin nicht in Sonderzeichenfolgen im Muster vorkommen können, z Durch diese Syntax definierte Zeichenfolge führt zum Beispiel zu einem Kompilierungsfehler ( ?( führt zu einem Fehler.) , nachdem die Ersetzung der Ersatzzeichenfolge durch einen Rückverweis durchgeführt wurde, wird die ersetzte Zeichenfolge als PHP-Code ausgewertet (Auswertungsfunktionsmethode) und das Ergebnis wird als tatsächliche Zeichenfolge verwendet, die an der Ersetzung beteiligt ist () und NULL-Zeichen werden bei der Rückreferenzersetzung mit Backslashes maskiert
A: Wenn dieser Modifikator festgelegt ist, muss das Muster ein „verankertes“ Muster sein bedeutet, dass die Suche nur am Anfang der Zielzeichenfolge erfolgen muss. Dieser Effekt kann auch mit dem entsprechenden Muster erstellt werden. Dies ist die einzige Möglichkeit, dieses Muster in Perl zu implementieren
Tip 请确保replacement参数由合法php代码字符串组成, 否则php将会 在preg_replace()调用的行上 产生一个解释错误. Note: 仅 preg_replace()使用此修饰符, 其他PCRE函数忽略此修饰符.
Das obige ist der detaillierte Inhalt vonGründe und Lösungen für das Scheitern der regulären PHP-Übereinstimmung aller Zeichen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!