Heim Backend-Entwicklung PHP-Tutorial Eine kurze Diskussion über reguläre Ausdrücke in PHP

Eine kurze Diskussion über reguläre Ausdrücke in PHP

Jan 05, 2019 am 09:54 AM
php 正则表达式

Dieser Artikel stellt Ihnen die regulären Ausdrücke von PHP vor. Ich hoffe, dass er Ihnen als Referenz dienen wird.

Mind Map

Klicken Sie auf das Bild unten, um den spezifischen Inhalt anzuzeigen!

Einführung

Reguläre Ausdrücke, jeder sollte sich in der Entwicklung befinden. Das ist so Heutzutage gibt es in vielen Entwicklungssprachen reguläre Ausdrucksanwendungen wie Javascript, Java, .net, PHP usw. Heute werde ich Ihnen mein Verständnis von regulären Ausdrücken mitteilen . Beratung!

Begriffe, die Sie kennen müssen – Wie viel wissen Sie über die folgenden Begriffe?

Δ Trennzeichen

Δ Zeichenfeld

Δ Modifikator

Δ Qualifizierer

Δ Caret

Δ Platzhalter (Vorwärts-Vorprüfung, Rückwärts-Vorprüfung)

Δ Rückverweis

Δ Lazy Match

Δ Kommentare

Δ Nullzeichenbreite

Positionierung

Wann verwenden wir Was ist mit normal? Ausdrücke? Es reicht nicht aus, für alle Zeichenoperationen reguläre Ausdrücke zu verwenden. PHP verwendet in einigen Aspekten reguläre Ausdrücke, was sich tatsächlich auf die Effizienz auswirkt. Wenn wir auf das Parsen komplexer Textdaten stoßen, ist die Verwendung regulärer Ausdrücke die bessere Wahl.

Vorteile

Reguläre Ausdrücke können die Arbeitseffizienz verbessern beim Umgang mit komplexen Zeichenoperationen und Ihnen bis zu einem gewissen Grad die Kosten ersparen Menge an Code.

Nachteile

Wenn wir reguläre Ausdrücke verwenden, erhöhen komplexe reguläre Ausdrücke die Komplexität des Codes, was sehr frustrierend schwierig ist verstehen. Daher müssen wir manchmal Kommentare in reguläre Ausdrücke einfügen.

Gemeinsamer Modus

¤ Trennzeichen, normalerweise verwenden Sie „/“ als Trennzeichen für Anfang und Ende, Sie können auch „#“ verwenden.

Wann sollten Sie „#“ verwenden? Im Allgemeinen ist dies der Fall, wenn Ihre Zeichenfolge viele „/“-Zeichen enthält, da solche Zeichen während des regulären Ausdrucks maskiert werden müssen, z als uri .

Der Code, der das Trennzeichen „/“ verwendet, lautet wie folgt.

$regex = '/^http:\/\/([\w.]+)\/([\w]+)\/([\w]+)\.html$/i';
$str = 'http://www.youku.com/show_page/id_ABCDEFG.html';
$matches = array();

if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Nach dem Login kopieren

$matches[0] in preg_match enthält die Zeichenfolge, die mit dem gesamten Muster übereinstimmt.

Der Code, der das Trennzeichen „#“ verwendet, lautet wie folgt: entgeht „/“ nicht!

$regex = '#^http://([\w.]+)/([\w]+)/([\w]+)\.html$#i';
$str = 'http://www.youku.com/show_page/id_ABCDEFG.html';
$matches = array();

if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Nach dem Login kopieren

¤ Modifikator: Wird zum Ändern des regulären Codes verwendet Ausdrucksstilverhalten.

Was wir sehen ('/^http://([w.]+)/([w]+)/([w]+).html/ i') Das letzte „i“ darin ist der Modifikator, der bedeutet, dass die Groß- und Kleinschreibung ignoriert wird. Ein anderes, das wir häufig verwenden, ist „x“, was bedeutet, dass Leerzeichen ignoriert werden.

Beitragscode:

$regex = '/HELLO/';
$str = 'hello word';
$matches = array();

if(preg_match($regex, $str, $matches)){
    echo 'No i:Valid Successful!',"\n";
}

if(preg_match($regex.'i', $str, $matches)){
    echo 'YES i:Valid Successful!',"\n";
}
Nach dem Login kopieren

¤ Zeichenfeld: [w] Der mit eckigen Klammern erweiterte Teil ist das Zeichenfeld.

¤ Qualifizierer: Zum Beispiel [w]{3,5} oder [w]* oder [w]+. Die Symbole nach [w] stehen alle für Qualifikatoren. Die konkrete Bedeutung wird nun eingeführt.

{3,5} bedeutet 3 bis 5 Zeichen. {3,} besteht aus mehr als 3 Zeichen, {,5} aus bis zu 5 Zeichen und {3} aus drei Zeichen.

* bedeutet 0 bis mehr

* bedeutet 1 oder mehr.

¤ Das Caretzeichen

^:

> in einem Zeichenfeld (z. B. [^w]) bedeutet Negation (d. h. nicht einschließen) - —„Auswahl umkehren“

    > Wird vor dem Ausdruck platziert und bedeutet, dass mit dem aktuellen Zeichen begonnen wird. (/^n/i, bedeutet, mit n zu beginnen).

Beachten Sie, dass wir „“ oft als „Escape-Zeichen“ bezeichnen. Wird verwendet, um einige Sonderzeichen wie „.“ oder „/“ zu maskieren.

Platzhalter (Lookarounds): Bestätigen das Vorhandensein oder Fehlen bestimmter Zeichen in bestimmten Zeichenfolgen!

Es gibt zwei Arten von Lookarounds: Lookaheads (Vorwärts-Lookup ?=) und Lookbehinds (Reverse-Lookup?<=).

> Format:

Vorwärtssuche: (?=) Das entsprechende (?!) bedeutet negative Bedeutung

Rückwärtssuche: (?< =) Das entsprechende ( ?

gefolgt von den Zeichen

$regex = &#39;/(?<=c)d(?=e)/&#39;;  /* d 前面紧跟c, d 后面紧跟e*/
$str = &#39;abcdefgk&#39;;
$matches = array();

if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Nach dem Login kopieren

negative Bedeutung:

$regex = &#39;/(?<!c)d(?!e)/&#39;;  /* d 前面不紧跟c, d 后面不紧跟e*/
$str = &#39;abcdefgk&#39;;
$matches = array();

if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Nach dem Login kopieren

>字符宽度:零

验证零字符代码

$regex = &#39;/HE(?=L)LO/i&#39;;
$str = &#39;HELLO&#39;;
$matches = array();

if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Nach dem Login kopieren

打印不出结果!

$regex = &#39;/HE(?=L)LLO/i&#39;;
$str = &#39;HELLO&#39;;
$matches = array();

if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Nach dem Login kopieren

能打印出结果!

说明:(?=L)意思是HE后面紧跟一个L字符。但是(?=L)本身不占字符,要与(L)区分,(L)本身占一个字符。

捕获数据

没有指明类型而进行的分组,将会被获取,供以后使用。

> 指明类型指的是通配符。所以只有圆括号起始位置没有问号的才能被捕捉。

> 在同一个表达式内的引用叫做反向引用。

> 调用格式: \编号(如\1)。

$regex = &#39;/^(Chuanshanjia)[\w\s!]+\1$/&#39;;    
$str = &#39;Chuanshanjia thank Chuanshanjia&#39;;
$matches = array();

if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Nach dem Login kopieren

> 避免捕获数据

格式:(?:pattern)

优点:将使有效反向引用数量保持在最小,代码更加、清楚。

>命名捕获组

格式:(?P<组名>) 调用方式 (?P=组名)

$regex = &#39;/(?P<author>chuanshanjia)[\s]Is[\s](?P=author)/i&#39;;
$str = &#39;author:chuanshanjia Is chuanshanjia&#39;;
$matches = array();

if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Nach dem Login kopieren

运行结果

惰性匹配(记住:会进行两部操作,请看下面的原理部分)

  格式:限定符?

原理:"?":如果前面有限定符,会使用最小的数据。如“*”会取0个,而“+”会取1个,如过是{3,5}会取3个。

先看下面的两个代码:

代码1.

<?php
$regex = &#39;/heL*/i&#39;;
$str = &#39;heLLLLLLLLLLLLLLLL&#39;;
if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Nach dem Login kopieren

结果1.

代码2

<?php
$regex = &#39;/heL*?/i&#39;;
$str = &#39;heLLLLLLLLLLLLLLLL&#39;;
if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Nach dem Login kopieren

结果2

代码3,使用“+”

<?php
$regex = &#39;/heL+?/i&#39;;
$str = &#39;heLLLLLLLLLLLLLLLL&#39;;
if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Nach dem Login kopieren

结果3

代码4,使用{3,5}

<?php
$regex = &#39;/heL{3,10}?/i&#39;;
$str = &#39;heLLLLLLLLLLLLLLLL&#39;;
if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Nach dem Login kopieren

结果4

正则表达式的注释

格式:(?# 注释内容)

用途:主要用于复杂的注释

贡献代码:是一个用于连接MYSQL数据库的正则表达式

$regex = &#39;/
    ^host=(?<!\.)([\d.]+)(?!\.)                 (?#主机地址)
\|
    ([\w!@#$%^&*()_+\-]+)                       (?#用户名)
\|
    ([\w!@#$%^&*()_+\-]+)                       (?#密码)
(?!\|)$/ix&#39;;

$str = &#39;host=192.168.10.221|root|123456&#39;;
$matches = array();

if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Nach dem Login kopieren

特殊字符

特殊字符解释
*0到多次
+1到多次还可以写成{1,}
?0或1次
.匹配除换行符外的所有单个的字符
\w[a-zA-Z0-9_]
\s空白字符(空格,换行符,回车符)[\t\n\r]
\d[0-9]

案例汇总

1、PHP中文匹配

<?php
$str = "PHP编程";
if (preg_match("/([0-9a-zA-Z\x{4e00}-\x{9fa5}]+)/u",$str, $matches)) {
    var_dump($matches);
    echo "\n";
}
Nach dem Login kopieren

 以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关教程栏目!!!

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über reguläre Ausdrücke in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

7 PHP-Funktionen, die ich leider vorher nicht kannte 7 PHP-Funktionen, die ich leider vorher nicht kannte Nov 13, 2024 am 09:42 AM

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

Wie analysiert und verarbeitet man HTML/XML in PHP? Wie analysiert und verarbeitet man HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge Feb 07, 2025 pm 12:12 PM

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Apr 03, 2025 am 12:03 AM

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.

See all articles