Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich Strings mit regulären PHP-Ausdrücken teilen und maskieren?

Wie kann ich Strings mit regulären PHP-Ausdrücken teilen und maskieren?

WBOY
WBOYOriginal
2021-11-01 15:46:233463Durchsuche

Im vorherigen Artikel habe ich Ihnen „Wie führt man die Suche und Ersetzung regulärer Ausdrücke in PHP durch?“ vorgestellt. 》, in dem die relevanten Kenntnisse zur Durchführung der Suche und Ersetzung regulärer Ausdrücke in PHP ausführlich vorgestellt werden. In diesem Artikel werden wir uns weiterhin mit den relevanten Kenntnissen zur Zeichenfolgensegmentierung und zum Escapen in regulären Ausdrücken befassen !

Wie kann ich Strings mit regulären PHP-Ausdrücken teilen und maskieren?

Im vorherigen Artikel haben wir gelernt, wie man einen globalen Vergleich regulärer Ausdrücke in PHP durchführt, wie man Array-Elemente erkennt, die einem bestimmten Muster entsprechen, und wie man eine Suche und Ersetzung regulärer Ausdrücke durchführt. Wir können dies über und preg_match( tun. ) -Funktion, die preg_match_all()-Funktion, die preg_grep()-Funktion und die preg_replace()-Funktion können mit regulären implementiert werden Ausdrücke Der Hauptzweck von Ausdrücken besteht darin, leistungsstarke Funktionen auf einfache Weise zu implementieren. preg_match() 函数、preg_match_all()函数、preg_grep() 函数和preg_replace() 函数就能够实现,使用正则表达式的主要目的就是为了通过简单的办法来实现强大的功能。

其中对于正则表达式与字符串之间的操作还有很多,其中就包括使用正则表达式分割字符串,那接下来我们就一起来看一下,我们怎样通过字符表达式来分割字符串。

<strong><span style="font-size: 20px;">preg_split() </span></strong>函数

在PHP中 preg_split() 函数通过一个正则表达式来分割字符串,该函数的语法格式如下:

array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )

其中需要注意的是:

$pattern表示用于匹配的模式,也即正则表达式;$subject表示要分隔的字符串;$limit是个可选参数,如果指定,就将限制分隔得到的子串最多只有 limit 个,并且最后一个子串将包含所有剩余部分。limit 值为 -10NULL 时都代表“不限制”,建议使用 NULL。

$flags是个可选参数,它有 3 个取值。若设置为 PREG_SPLIT_NO_EMPTY,则 preg_split() 将返回分隔后的非空部分。若设置为 PREG_SPLIT_DELIM_CAPTURE,则分隔的模式中的括号表达式将被捕获并返回。若设置为 PREG_SPLIT_OFFSET_CAPTURE,则对于每一个出现的匹配返回时会附加字符串偏移量。

这将会改变返回数组中的每一个元素,使每个元素成为一个由第 0 个元素为分隔后的子串、第 1 个元素为该子串在 subject 中的偏移量组成的数组。返回值就是返回一个使用 pattern 分割 subject 字符串后得到的子串组成的数组。

接下来我们通过示例来看一下 preg_split() 函数的用法,示例如下:

<?php
    echo "<pre class="brush:php;toolbar:false">";
    $subject = &#39;PHP中文网:http://www.php.cn/, baidu百度:http://www.baidu.com/&#39;;
    $pattern = &#39;/[\s,:]+/&#39;;
    print_r( preg_split($pattern, $subject) );
    print_r( preg_split($pattern, $subject, 3) );
?>

输出结果:

Wie kann ich Strings mit regulären PHP-Ausdrücken teilen und maskieren?

示例如下:

<?php
$str = &#39;father mother andyou&#39;;
var_dump($str);
$chars = preg_split(&#39;/ /&#39;, $str, -1, PREG_SPLIT_OFFSET_CAPTURE);
var_dump($chars);
?>

输出结果:

Wie kann ich Strings mit regulären PHP-Ausdrücken teilen und maskieren?

由上述示例能够看出,通过preg_split() 函数能够完成通过一个真个表达式来分割字符串。接下来我们来看一下,怎样对正则表达式来进行转义。

<strong><span style="font-size: 20px;">PHP preg_quote()</span></strong> 函数

普通字符包括没有显式指定为元字符的所有可打印和不可打印字符,包括所有大小写字母、数字、标点符号和一些符号。最简单的正则表达式是用于搜索字符串相比较的单个普通字符。例如,单字符正则表达式/A/会始终匹配字母 A。

除普通字符之外,正则表达式还可以包含“元字符”。元字符可分为单字符元字符和多字符元字符。例如,元字符d,它与数字字符相匹配。

PHP preg_quote() 函数用来对正则表达式字符串进行转义,也就是在特殊字符前边增加一个反斜杠,该函数的语法格式如下:

preg_quote($str [, $delimiter = NULL])

其中需要注意的是:

$str表示正则表达式字符串;$delimiter是个可选参数,额外增加的需要转义的字符。如果指定了 $delimiter 参数,被指定的字符也会被转义。这通常用于转义 PCRE 函数使用的分隔符。 / 是最常见的分隔符。

preg_quote() 函数会向参数 $str

Es gibt viele Operationen zwischen regulären Ausdrücken und Zeichenfolgen, einschließlich der Verwendung regulärer Ausdrücke zum Teilen von Zeichenfolgen. Schauen wir uns als Nächstes an, wie wir Zeichenfolgen durch Zeichenausdrücke aufteilen.
🎜🎜<strong><span style="font-size: 20px;">preg_split() </span></strong>Funktion🎜🎜In PHP teilt die Funktion preg_split() eine Zeichenfolge durch einen regulären Ausdruck. Das Syntaxformat der Funktion ist wie folgt: 🎜
<?php
    $url = &#39;http://www.baidu.com/&#39;;
    echo preg_quote($url) . "<br />";
    echo preg_quote($url, "/") . "<br />";
    $textbody = "baidu百度 is *very* good to study.";
    $word     = "*very*";
    echo preg_replace( "/".preg_quote($word)."/", "<i>".$word."</i>", $textbody );
?>
🎜Was beachtet werden muss, ist:
🎜🎜$pattern stellt das für den Abgleich verwendete Muster dar, d. h. ein regulärer Ausdruck; Zu trennende Zeichenfolge; $limit ist ein optionaler Parameter. Wenn angegeben, werden die durch die Begrenzung erhaltenen Teilzeichenfolgen auf limit begrenzt und die letzte Teilzeichenfolge enthält alle verbleibenden Teile. Wenn der Grenzwert -1, 0 oder NULL ist, bedeutet dies „keine Begrenzung“, und es wird empfohlen, NULL zu verwenden. 🎜🎜$flags ist ein optionaler Parameter, der 3 Werte hat. Wenn es auf PREG_SPLIT_NO_EMPTY gesetzt ist, gibt preg_split() den abgetrennten, nicht leeren Teil zurück. Bei Festlegung auf PREG_SPLIT_DELIM_CAPTURE werden Klammerausdrücke in durch Trennzeichen getrennten Mustern erfasst und zurückgegeben. Wenn es auf PREG_SPLIT_OFFSET_CAPTURE gesetzt ist, wird der String-Offset bei jedem Vorkommen einer Übereinstimmung an die Rückgabe angehängt. 🎜🎜Dadurch wird jedes Element im zurückgegebenen Array geändert, sodass jedes Element zu einem Array wird, das aus dem 0. Element, dem getrennten Teilstring, und dem 1. Element, dem Offset des Teilstrings im Betreff, besteht. Der Rückgabewert ist ein Array, das aus Teilzeichenfolgen besteht, die nach der Aufteilung der betreffenden Zeichenfolge mithilfe eines Musters erhalten werden. 🎜🎜Als nächstes werfen wir einen Blick auf die Verwendung der Funktion preg_split() anhand eines Beispiels. Das Beispiel sieht wie folgt aus: 🎜
<?php
$keywords = &#39; for a g3/400&#39;;
$keywords = preg_quote($keywords, &#39;/&#39;);
echo $keywords; // 返回 $40 for a g3\/400
?>
🎜Ausgabeergebnis:
🎜🎜Wie kann ich Strings mit regulären PHP-Ausdrücken teilen und maskieren?🎜🎜Das Beispiel sieht wie folgt aus: 🎜rrreee🎜Ausgabeergebnis:
🎜🎜Wie kann ich Strings mit regulären PHP-Ausdrücken teilen und maskieren?🎜🎜 Wie aus dem obigen Beispiel ersichtlich ist, kann die Funktion preg_split () eine Zeichenfolge durch einen vollständigen Ausdruck aufteilen. Schauen wir uns als Nächstes an, wie man reguläre Ausdrücke maskiert. 🎜🎜<strong><span style="max-width:90%">PHP preg_quote()</span></strong>Funktionen🎜🎜Normale Zeichen umfassen alle druckbaren und nicht druckbaren Zeichen, die nicht explizit als Metazeichen gekennzeichnet sind, einschließlich aller Groß- und Kleinbuchstaben, Zahlen, Satzzeichen und einiger Symbole. Der einfachste reguläre Ausdruck ist ein einzelnes gewöhnliches Zeichen, das zum Vergleichen von Suchzeichenfolgen verwendet wird. Beispielsweise stimmt der aus einem Zeichen bestehende reguläre Ausdruck /A/ immer mit dem Buchstaben A überein. 🎜🎜Reguläre Ausdrücke können neben gewöhnlichen Zeichen auch „Metazeichen“ enthalten. Metazeichen können in Einzelzeichen-Metazeichen und Mehrzeichen-Metazeichen unterteilt werden. Beispielsweise das Metazeichen d, das numerischen Zeichen entspricht. 🎜🎜PHP-Funktion preg_quote() wird verwendet, um reguläre Ausdruckszeichenfolgen zu maskieren, d. h. durch Hinzufügen eines Backslashs vor Sonderzeichen. Das Syntaxformat dieser Funktion lautet wie folgt: 🎜rrreee🎜Was beachtet werden muss, ist:
🎜🎜$str stellt eine reguläre Ausdruckszeichenfolge dar; $delimiter ist ein optionaler Parameter, zusätzliche Zeichen, die benötigt werden entkommen sein. Wenn der Parameter $delimiter angegeben ist, werden die angegebenen Zeichen auch maskiert. Dies wird normalerweise verwendet, um Trennzeichen zu maskieren, die von der PCRE-Funktion verwendet werden. / sind die häufigsten Trennzeichen. Die Funktion 🎜🎜preg_quote() fügt vor jedem regulären Ausdruckszeichen, das durch den Parameter $str bereitgestellt wird, einen Backslash ein. Dies wird normalerweise verwendet, wenn eine Laufzeitzeichenfolge als regulärer Ausdruck abgeglichen werden muss. 🎜

正则表达式特殊字符有:. \ + * ? [ ^ ] $ ( ) { } = ! <code>> | : -    。要清楚/不是正则表达式特殊字符。

接下来我们通过示例来看一下使用 preg_quote() 函数对字符串进行转义,示例如下:

<?php
    $url = &#39;http://www.baidu.com/&#39;;
    echo preg_quote($url) . "<br />";
    echo preg_quote($url, "/") . "<br />";
    $textbody = "baidu百度 is *very* good to study.";
    $word     = "*very*";
    echo preg_replace( "/".preg_quote($word)."/", "<i>".$word."</i>", $textbody );
?>

输出结果:

Wie kann ich Strings mit regulären PHP-Ausdrücken teilen und maskieren?

示例如下:

<?php
$keywords = &#39;$40 for a g3/400&#39;;
$keywords = preg_quote($keywords, &#39;/&#39;);
echo $keywords; // 返回 \$40 for a g3\/400
?>

输出结果:

Wie kann ich Strings mit regulären PHP-Ausdrücken teilen und maskieren?

上述示例中,便是通过preg_quote() 函数用来对正则表达式字符串进行转义。

大家如果感兴趣的话,可以点击《PHP视频教程》、《正则表达式手册》进行更多关于PHP和正则表达式知识的学习。

Das obige ist der detaillierte Inhalt vonWie kann ich Strings mit regulären PHP-Ausdrücken teilen und maskieren?. 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