Heim  >  Artikel  >  Backend-Entwicklung  >  Zusammenfassung von Beispielen häufig verwendeter regulärer Ausdrucksfunktionen in PHP

Zusammenfassung von Beispielen häufig verwendeter regulärer Ausdrucksfunktionen in PHP

伊谢尔伦
伊谢尔伦Original
2017-06-27 11:34:241307Durchsuche

1. preg_match()

Funktionsprototyp: int preg_match (string $pattern, string $content [, array $matches])
preg_match ()-Funktion in $contentstring Suche für Inhalte, die dem von $pattern angegebenen regulären Ausdruck entsprechen. Wenn $matches angegeben ist, werden die übereinstimmenden Ergebnisse darin platziert. $matches[0] enthält den Text, der mit dem gesamten Muster übereinstimmt, $matches[1] enthält die erste erfasste Übereinstimmung des Musterelements in Klammern usw. Diese Funktion führt nur einen Match durch und gibt letztendlich die Anzahl der Matching-Ergebnisse von 0 oder 1 zurück. Listing 6.1 zeigt ein Codebeispiel für die Funktion preg_match().
Code 6.1 Datums- und Uhrzeitabgleich
Der Code lautet wie folgt:

<?php 
//需要匹配的字符串。date函数返回当前时间 
$content = "Current date and time is ".date("Y-m-d h:i a").", we are learning PHP together."; 
//使用通常的方法匹配时间 
if (preg_match ("//d{4}-/d{2}-/d{2} /d{2}:/d{2} [ap]m/", $content, $m)) 
{ 
echo "匹配的时间是:" .$m[0]. "/n"; 
} 
//由于时间的模式明显,也可以简单的匹配 
if (preg_match ("/([/d-]{10}) ([/d:]{5} [ap]m)/", $content, $m)) 
{ 
echo "当前日期是:" .$m[1]. "/n"; 
echo "当前时间是:" .$m[2]. "/n"; 
} 
?>

Dies ist ein einfaches Beispiel für den dynamischen Textzeichenfolgenabgleich. Unter der Annahme, dass die aktuelle Systemzeit „13:25 Uhr am 17. August 2016“ ist, wird der folgende Inhalt ausgegeben.
Die passende Zeit ist: 17.08.2016 13:25 Uhr
Das aktuelle Datum ist: 17.08.2016
Die aktuelle Zeit ist: 13:25 Uhr

2 . ereg() und eregi()

ereg() ist die Matching-Funktion für reguläre Ausdrücke in der POSIX-Erweiterungsbibliothek. eregi() ist eine Version der Funktion ereg(), die die Groß- und Kleinschreibung ignoriert. Beide haben ähnliche Funktionen wie preg_match, die Funktion gibt jedoch einen booleschen Wert zurück, der angibt, ob die Übereinstimmung erfolgreich war oder nicht. Es ist zu beachten, dass der erste Parameter der POSIX-Erweiterungsbibliotheksfunktion eine reguläre Ausdruckszeichenfolge akzeptiert, d. h. es ist kein Trennzeichen erforderlich. Listing 6.2 ist beispielsweise eine Methode zur Überprüfung der Sicherheit von Dateinamen.
Code 6.2 Sicherheitsprüfung des Dateinamens
Der Code lautet wie folgt:

<?php 
$username = $_SERVER[&#39;REMOTE_USER&#39;]; 
$filename = $_GET[&#39;file&#39;]; 
//对文件名进行过滤,以保证系统安全 
if (!ereg(&#39;^[^./][^/]*$&#39;, $userfile)) 
{ 
die(&#39;这不是一个非法的文件名!&#39;); 
} 
//对用户名进行过滤 
if (!ereg(&#39;^[^./][^/]*$&#39;, $username)) 
{ 
die(&#39;这不是一个无效的用户名&#39;); 
} 
//通过安全过滤,拼合文件路径 
$thefile = "/home/$username/$filename"; 
?>

Normalerweise ist die Verwendung der Perl-kompatiblen Funktion zum Abgleich regulärer Ausdrücke perg_match() besser als die Verwendung von ereg() oder eregi() ist schneller. Wenn Sie lediglich herausfinden möchten, ob ein String einen bestimmten Teilstring enthält, empfiehlt sich die Verwendung der Funktion strstr() oder strpos().

Ersetzung regulärer Ausdrücke

1. ereg_replace() und eregi_replace()

Funktionsprototyp: string ereg_replace (string $pattern, string $replacement, string $string)
string eregi_replace (string $pattern, string $replacement , string $string)
ereg_replace() sucht die Musterzeichenfolge $pattern in $string und ersetzt das übereinstimmende Ergebnis durch $replacement. Wenn $pattern Mustereinheiten (oder Untermuster) enthält, werden Positionen in $replacement wie „/1“ oder „$1“ durch den Inhalt ersetzt, der mit diesen Untermustern übereinstimmt. Und „/0“ oder „$0“ bezieht sich auf den Inhalt der gesamten übereinstimmenden Zeichenfolge. Es ist zu beachten, dass der Backslash als Escape-Zeichen in doppelten Anführungszeichen verwendet wird, daher muss die Form „//0“ und „//1“ verwendet werden.
Die Funktionen von eregi_replace() und ereg_replace() sind die gleichen, außer dass ersteres die Groß- und Kleinschreibung ignoriert. Code 6.6 ist ein Anwendungsbeispiel dieser Funktion. Dieser Code zeigt, wie einfache Reinigungsarbeiten am Programmquellcode durchgeführt werden.
Code 6.6 Bereinigen des Quellcodes
Der Code lautet wie folgt:

<?php 
$lines = file(&#39;source.php&#39;); //将文件读入数组中 
for($i=0; $i<count($lines); $i++) 
{ 
//将行末以“//”或“#”开头的注释去掉 
$lines[$i] = eregi_replace("(////|#).*$", "", $lines[$i]); 
//将行末的空白消除 
$lines[$i] = eregi_replace("[ /n/r/t/v/f]*$", "/r/n", $lines[$i]); 
} 
//整理后输出到页面 
echo htmlspecialchars(join("",$lines)); 
?>

2. preg_replace()

Funktionsprototyp: gemischt preg_replace (gemischt $pattern, gemischt $replacement, gemischt $subject [, int $limit])
preg_replace ist leistungsfähiger als ereg_replace. Die ersten drei Parameter können alle Arrays verwenden; der vierte Parameter $limit kann die Anzahl der Ersetzungen festlegen, und die Standardeinstellung ist, alle zu ersetzen. Code 6.7 ist ein Anwendungsbeispiel für den Array-Ersatz.
Code 6.7 Array-Ersetzung
Der Code lautet wie folgt:

<?php 
//字符串 
$string = "Name: {Name}<br>/nEmail: {Email}<br>/nAddress: {Address}<br>/n"; 
//模式 
$patterns =array( 
"/{Address}/", 
"/{Name}/", 
"/{Email}/" 
); 
//替换字串 
$replacements = array ( 
"No.5, Wilson St., New York, U.S.A", 
"Thomas Ching", 
"tom@emailaddress.com", 
); 
//输出模式替换结果 
print preg_replace($patterns, $replacements, $string); 
?>

Die Ausgabeergebnisse sind wie folgt.

Name: Thomas Ching", 
Email: tom@emailaddress.com 
Address: No.5, Wilson St., New York, U.S.A

Der Mustermodifikator „e“ kann im regulären Ausdruck von preg_replace verwendet werden. Seine Funktion besteht darin, das Übereinstimmungsergebnis als Ausdruck zu verwenden und erneut zu bearbeiten. Beispiel:
Der Code lautet wie folgt:

<?php 
$html_body = “<HTML><Body><H1>TEST</H1>My Picture<Img src=”my.gif”></Body></HTML>”; 
//输出结果中HTML标签将全部为小写字母 
echo preg_replace ( 
"/(<//?)(/w+)([^>]*>)/e", 
"&#39;//1&#39;.strtolower(&#39;//2&#39;).&#39;//3&#39;", //此处的模式变量//2将被strtolower转换为小写字符 
$html_body); 
?>

Tipp
Die preg_replace-Funktion verwendet Perl-kompatible reguläre Ausdruckssyntax und ist normalerweise eine schnellere Alternative zu ereg_replace. Wenn Sie nur eine einfache Ersetzung einer Zeichenfolge durchführen möchten, können Sie die Funktion str_replace verwenden.

Das obige ist der detaillierte Inhalt vonZusammenfassung von Beispielen häufig verwendeter regulärer Ausdrucksfunktionen in PHP. 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