Heim  >  Artikel  >  Backend-Entwicklung  >  php: Vergleich der Verwendungsbeispiele von preg_match und preg_match_all

php: Vergleich der Verwendungsbeispiele von preg_match und preg_match_all

伊谢尔伦
伊谢尔伦Original
2017-06-24 15:35:331786Durchsuche

Anwendung regulärer Ausdrücke in PHP

In PHP-Anwendungen werden reguläre Ausdrücke hauptsächlich verwendet für:
• Reguläres Matching : Passen Sie den entsprechenden Inhalt gemäß dem regulären Ausdruck
an. • Reguläre Ersetzung: Passen Sie den Inhalt gemäß dem regulären Ausdruck an und ersetzen Sie
. • Reguläre Aufteilung: Teilen Sie die Zeichenfolge gemäß dem regulären Ausdruck
Es gibt zwei Arten von regulären Ausdrucksfunktionen in PHP: eine ist die Perl-kompatible reguläre Ausdrucksfunktion und die andere ist die erweiterte POSIX-reguläre Ausdrucksfunktion. Es gibt keinen großen Unterschied zwischen den beiden und es wird empfohlen, Perl-kompatible reguläre Ausdrucksfunktionen zu verwenden. Daher werden im Folgenden Perl-kompatible reguläre Ausdrucksfunktionen als Beispiele verwendet.
Trennzeichen
Reguläre Ausdrucksfunktion im Perl-Kompatibilitätsmodus, der reguläre Ausdruck muss in das Trennzeichen geschrieben werden. Als Trennzeichen kann jedes Zeichen verwendet werden, das kein Buchstabe, keine Zahl oder kein Backslash () ist. Normalerweise verwenden wir / als Trennzeichen. Informationen zur spezifischen Verwendung finden Sie in den folgenden Beispielen.
Tipps
Obwohl reguläre Ausdrücke sehr leistungsfähig sind, sollten Sie versuchen, keine regulären Ausdrucksfunktionen zu verwenden, wenn dies mit normalen Zeichenfolgenverarbeitungsfunktionen möglich ist, da reguläre Ausdrücke für viele sehr ineffizient sind. Über gewöhnliche String-Verarbeitungsfunktionen.
preg_match()
Die Funktion preg_match() wird für den regulären Ausdrucksabgleich verwendet. Sie gibt erfolgreich 1 zurück, andernfalls gibt sie 0 zurück.
Syntax:
int preg_match( Zeichenfolgenmuster, Zeichenfolgensubjekt [, Array-Übereinstimmungen] )
Parameterbeschreibung:

tr>
Parameter Beschreibung
Muster Regulärer Ausdruck
Betreff Muss mit dem abgerufenen Objekt übereinstimmen
matches Optional, Array
参数 说明
pattern 正则表达式
subject 需要匹配检索的对象
matches 可选,存储匹配结果的数组, $matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推
, $matches[0] enthält Text, der mit dem gesamten Muster übereinstimmt, $matches[1] enthält Text, der mit dem Untermuster in der ersten erfassten Klammer übereinstimmt, und so weiter

Beispiel 1:

<?php
if(preg_match("/php/i", "PHP is the web scripting language of choice.", $matches)){
    print "A match was found:". $matches[0];
} else {
    print "A match was not found.";
}
?>

Browserausgabe:

A match was found: PHP

In In diesem Beispiel wird PHP aufgrund der Verwendung des i-Modifikators im Text ohne Berücksichtigung der Groß- und Kleinschreibung abgeglichen.
Tipps
preg_match() beendet den Abgleich nach dem ersten erfolgreichen Abgleich. Wenn Sie alle Ergebnisse abgleichen möchten, d. h. bis zum Ende des Betreffs suchen, müssen Sie preg_match_all verwenden ()-Funktion.
Beispiel 2: Erhalten Sie den Hostdomänennamen von einer URL:

<?php
// 从 URL 中取得主机名
preg_match("/^(http://)?([^/]+)/i","http://www.php.cn/index.html", $matches);
$host = $matches[2];
// 从主机名中取得后面两段
preg_match("/[^./]+.[^./]+$/", $host, $matches);
echo "域名为:{$matches[0]}";
?>

Browserausgabe:

Der Domainname lautet: php.cn


preg_match_all()
Die Funktion preg_match_all() wird für den globalen Abgleich von regulären verwendet Ausdrücke Gibt an, wie oft das gesamte Muster bei Erfolg abgeglichen wurde (möglicherweise Null), oder FALSE bei Fehler.
Syntax:
int preg_match_all( Zeichenfolgenmuster, Zeichenfolgensubjekt, Array-Übereinstimmungen [, int Flags] )
Parameterbeschreibung:

Parameter Beschreibung Muster Regulärer Ausdruck Betreff Muss mit dem abgerufenen Objekt übereinstimmen matches Array zum Speichern von Matching-Ergebnissen Flags
参数 说明
pattern 正则表达式
subject 需要匹配检索的对象
matches 存储匹配结果的数组
flags

可选,指定匹配结果放入 matches 中的顺序,可供选择的标记有:

  1. PREG_PATTERN_ORDER:默认,对结果排序使 $matches[0] 为全部模式匹配的数组,$matches[1] 为第一个括号中的子模式所匹配的字符串组成的数组,以此类推

  2. PREG_SET_ORDER:对结果排序使 $matches[0] 为第一组匹配项的数组,$matches[1] 为第二组匹配项的数组,以此类推

  3. PREG_OFFSET_CAPTURE:如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量

Optional, geben Sie die Übereinstimmung an Die Reihenfolge, in der die Ergebnisse in Übereinstimmungen eingefügt werden, verfügbare Tags sind:


  1. PREG_PATTERN_ORDER: Standardmäßig werden die Ergebnisse so sortiert, dass $matches[ 0] ist ein Array aller Musterübereinstimmungen, $matches[1] ist ein Array von Zeichenfolgen, die mit dem Untermuster in der ersten Klammer übereinstimmen, und so weiter
  2. PREG_SET_ORDER: Sortieren Sie die Ergebnisse Sei $matches[0] das Array des ersten Satzes von Übereinstimmungen, $matches[1] das Array des zweiten Satzes von Übereinstimmungen usw.

  3. PREG_OFFSET_CAPTURE: Wenn dieses Tag festgelegt ist, gibt es auch den zugehörigen String-Offset für jedes übereinstimmende Ergebnis zurück
    <?php
    $str = "<pre class="brush:php;toolbar:false">学习php是一件快乐的事。
    所有的phper需要共同努力!
    "; $kw = "php"; preg_match_all('/
    ([sS]*?)
    /',$str,$mat); for($i=0;$i'.$kw.'', $mat[0][$i]); $str = str_replace($mat[1][$i], $mat[0][$i], $str); } echo $str; ?>

Das folgende Beispiel zeigt die Anzeige aller Schlüsselwörter (php) in den e03b848252eb9375d56be284e690e873bc5574f69a0cba105bc93bd3dc13c4ec-Tags im Text in Rot.



Regulär übereinstimmende chinesische Zeichen Regulär übereinstimmende chinesische Zeichen unterscheiden sich geringfügig je nach Seitenkodierung:

<?php
$str = "学习php是一件快乐的事。";
preg_match_all("/[x80-xff]+/", $str, $match);
//UTF-8 使用:
//preg_match_all("/[x{4e00}-x{9fa5}]+/u", $str, $match);
print_r($match);
?>
•GBK/GB2312-Kodierung: [x80-xff>]+ oder [xa1-xff]+

•UTF-8-Kodierung: [x{4e00}-x{9fa5}]+/u

Beispiel:
Array
(
    [0] => Array
        (
            [0] => 学习
            [1] => 是一件快乐的事。
        )
)


Ausgabe:

Das obige ist der detaillierte Inhalt vonphp: Vergleich der Verwendungsbeispiele von preg_match und preg_match_all. 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