Heim  >  Artikel  >  Backend-Entwicklung  >  Erfahren Sie mehr über reguläre PHP-Ausdrücke

Erfahren Sie mehr über reguläre PHP-Ausdrücke

墨辰丷
墨辰丷Original
2018-06-06 09:57:461084Durchsuche

Dieser Artikel führt hauptsächlich in ein tiefgreifendes Verständnis der regulären PHP-Ausdrücke ein. Ich hoffe, dass er für alle hilfreich ist.

PHP-Freigabe regulärer Ausdrücke:

1. Erstellen Sie einen regulären Ausdruck

$regex = '/d/i';
ähnelt in gewisser Weise der ersten Methode in JavaScript, außer dass das Wort hier eine Zeichenfolge ist.

2. Sonderzeichen in regulären Ausdrücken

Sonderzeichen sind: + * ? ) { } = ! : -

3 8 Methoden, preg_match und preg_match_all, preg_replace und preg_replace_callback, preg_grep, preg_split, preg_last_error und preg_quote.

preg_match:

Führt einen regulären Ausdrucksabgleich durch

Gibt die Anzahl der übereinstimmenden Muster zurück

. Sein Wert ist 0-mal (keine Übereinstimmung) oder 1-mal, da preg_match() die Suche nach

nach der ersten Übereinstimmung von beendet.

$subject = "dd133aa2";
$pattern = '/\d+/';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
Der obige Beispielcode fügt den Parameter „PREG_OFFSET_CAPTURE“ hinzu. In diesem Fall gibt es eine weitere Offset-Nummer in $matches. Beispiel: „2“ unten

Gibt die Anzahl der vollständigen Übereinstimmungen zurück (möglicherweise 0) oder FALSE, wenn ein Fehler auftritt.

Im folgenden Code sind $subject und $pattern die gleichen wie oben. Der einzige Unterschied besteht darin, dass preg_match durch preg_match_all ersetzt wird.

preg_match_all($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);

Die zurückgegebene Zahl ist 2, was zweimal übereinstimmt. Schauen Sie sich die Eingabe im Array $matches an, es gibt zwei. Eines mehr als oben.

preg_replace:

Führt eine Suche und Ersetzung regulärer Ausdrücke durch

Wenn subject ein Array ist, gibt preg_replace() ein Array zurück, andernfalls einen String.

Wenn eine Übereinstimmung gefunden wird, wird der ersetzte Betreff zurückgegeben, andernfalls wird der unveränderte Betreff zurückgegeben. Tritt ein Fehler auf, wird NULL zurückgegeben.

Im Code ist $subject ein Array mit zwei Sätzen von Zeichenfolgen. Als nächstes werden mehrere Zahlen durch Großbuchstaben „Z“ ersetzt.

$subject = array("dd133aa2", "kk1ff3");
$pattern = '/\d+/';
$result = preg_replace($pattern, 'Z', $subject);
print_r($result);

preg_replace_callback:

Führt eine Suche nach regulären Ausdrücken durch und verwendet einen „Callback“ zum Ersetzen


Das Verhalten dieser Funktion besteht darin, zum Ersetzen einen Callback anstelle von Replacement anzugeben Die Berechnung des Strings entspricht ansonsten preg_replace(), einschließlich des zurückgegebenen Ergebnisses.

Der folgende Code wird ebenfalls durch ein großes „Z“ ersetzt. Der Inhalt von $matches in der Rückruffunktion ist der kommentierte Teil des Codes. Das erste Mal ist 133 und das zweite Mal ist 2.

$subject = "dd133aa2";
$pattern = '/\d+/';
$result = preg_replace_callback($pattern, function($matches) {
    //$matches [0] => 133
    //$matches [0] => 2
    return 'Z';
   }, $subject);
print_r($result);

preg_grep:

Gibt Array-Einträge zurück, die mit dem Muster

übereinstimmen

gibt ein Array

zurück, das mithilfe des Schlüssels in der Eingabe indiziert wird.

Im folgenden Beispielcode habe ich „ddsdfd“ zum Array „$subject“ hinzugefügt, das keine Zahlen enthält. Beim Abgleich habe ich diejenigen ohne Zahlen herausgefiltert.

Was $result2 ausgibt, ist genau das Gegenteil. Es wird das gefilterte Ergebnis ausgegeben, aber der Schlüssel ist immer noch 2 und nicht 0.

$subject = array("dd133aa2", "kk1ff3", "ddsdfd");
$pattern = '/\d+/';
$result = preg_grep($pattern, $subject);
$result2 = preg_grep($pattern, $subject, PREG_GREP_INVERT);
print_r($result);
print_r($result2);

preg_split:

Trennen Sie Zeichenfolgen durch einen regulären Ausdruck

 

返回一个使用 pattern 边界分隔 subject 后得到 的子串组成的数组。

下面代码中,我将$pattern中的表达式加了括号,为了在$result2中捕获到。

$subject = "dd133aa2cc";
$pattern = '/(\d+)/';
$result = preg_split($pattern, $subject);
$result2 = preg_split($pattern, $subject, null, PREG_SPLIT_DELIM_CAPTURE);
print_r($result);
print_r($result2);


preg_last_error:

返回最后一个PCRE正则执行产生的错误代码

preg_match(&#39;/(?:\D+|<\d+>)*[!?]/&#39;, &#39;foobar foobar foobar&#39;);
$result = preg_last_error();//PREG_BACKTRACK_LIMIT_ERROR 调用回溯限制超出
print_r($result);

preg_quote:

转义正则表达式字符

返回转义后的字符串

下面的代码中,$subject中有两个需要转义的字符,“.”和“?”。

将$result打印出后是“dd\.a\?a2cc”,而在$result2中,多加了个参数“a”,这样的话“a”也会被转义,“dd\.\a\?\a2cc”

$subject = "dd.a?a2cc";
$result = preg_quote($subject);
$result2 = preg_quote($subject, &#39;a&#39;);
print_r($result);
print_r($result2);

4、模式修正符

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐: 

PHP生成PDF文件的方法

PHP MPDF中文乱码如何解决

PHP判断手机是IOS还是Android的三个方法

Das obige ist der detaillierte Inhalt vonErfahren Sie mehr über reguläre PHP-Ausdrücke. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen 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