Im vorherigen Artikel „PHP-String-Lernen: So entfernen Sie andere Zeichen und lassen nur Zahlen übrig“ haben wir die Methode der Verwendung einer for-Schleife und der Funktion in_array() oder is_numeric() zum Extrahieren numerischer Zeichen in einer Zeichenfolge vorgestellt. Dieses Mal setzen wir das Studium und die Praxis von PHP-Strings fort und stellen mehrere andere Methoden zum Extrahieren numerischer Zeichen in Strings vor.
Das Extrahieren numerischer Zeichen aus einer Zeichenfolge ist im Wesentlichen ein String-Filtervorgang. Als ich String-Filterung sah, dachte ich an „regulärer Ausdruck“.
Regulärer Ausdruck ist eine logische Formel für Zeichenfolgenoperationen. Er verwendet einige vordefinierte spezifische Zeichen und Kombinationen dieser spezifischen Zeichen, um eine „Regelzeichenfolge“ zu bilden, die zum Ausdrücken einer Filterlogik für Zeichenfolgen verwendet wird.
Reguläre Ausdrücke erstellen Muster nach bestimmten Regeln, vergleichen sie mit den eingegebenen Zeichenfolgeninformationen und verwenden sie in bestimmten Funktionen, um Vorgänge wie Zeichenfolgenabgleich, Suche, Ersetzung und Segmentierung durchzuführen.
Sehen wir uns an, wie man reguläre Ausdrücke verwendet, um Zeichenfolgen zu filtern, nur die numerischen Zeichen in der Zeichenfolge zu extrahieren und eine aus diesen numerischen Zeichen bestehende Teilzeichenfolge zurückzugeben.
Zum Beispiel geben wir die folgende Zeichenfolge
$str ='0我是123456一段测试的字789符串0';
und möchten eine Teilzeichenfolge bestehend aus numerischen Zeichen „01234567890
“ zurückgeben! 01234567890
”!
方法1、使用preg_replace()函数
分析一下上面的关键代码:
preg_replace("/[^0-9]/", "", $str)
的意思为匹配除了0~9间的数字以外的字符,并将这些字符替换为空字符,即删除这些字符即可。那么就只剩下数字字符了,因此输出结果为:
我们来简单了解一下preg_replace()函数
preg_replace() 函数可以执行正则表达式的搜索和替换,是一个强大的字符串替换处理函数,该它的语法格式为“preg_replace($pattern, $replacement, $subject [, $limit = -1 [, &$count]])
”,表示搜索 subject 中匹配 pattern 的部分, 以 replacement 进行替换;可选参数 limit 用于设置最大可替换次数(默认值是-1,可无限制)。
方法2:使用preg_match_all()函数
分析一下上面的代码:
preg_match_all('/d+/',$str,$array)
的意思为在字符串$str
中多次查找只包含0~9间数字字符的子串,将每次的匹配结果放在一个数组$array
中。我们使用var_dump($array)
来输出这个数组看看:
会发现结果数组$array
是一个二维数组,包含匹配结果的元素是内层的数组。而想要将这些元素拼接成一个字符串,就需要嵌套两层foreach循环:
第一层循环中
foreach($array as $arr){ }
将内层数组作为值赋给$arr
,所以在第二层循环中需要遍历的数组变成了$arr
foreach($arr as $value){ $result .= $value; }
在每次循环中,将数组值赋给变量$value,然后使用“.=
”运算符拼接到字符串$result
中,因此一开始$result
preg_match_all($pattern, $subject [, &$matches [, $flags = PREG_PATTERN_ORDER [, $offset = 0 ]]])
Analysieren Sie den obigen Schlüsselcode:
preg_replace("/[^0-9]/", "", $str)
bedeutet, andere Zeichen als Zahlen zwischen 0 und 9 abzugleichen und diese Zeichen durch leere Zeichen zu ersetzen, dh diese Zeichen zu löschen. Dann bleiben nur noch numerische Zeichen übrig, sodass das Ausgabeergebnis lautet:
Werfen wir einen kurzen Blick auf die Funktion preg_replace()
preg_replace($pattern, $replacement, $subject [, $limit = -1 [, &$count]])
“, was bedeutet, nach dem Teil des Betreffs zu suchen, der mit dem Muster übereinstimmt, und verwenden Sie replacement Replacement; der optionale Parameter limit wird verwendet, um die maximale Anzahl von Substitutionen festzulegen (der Standardwert ist -1, unbegrenzt). rrreee
Analysieren Sie den obigen Code:preg_match_all('/d+/',$str,$array)
bedeutet in Zeichen Suchen string $str
mehrmals für Teilzeichenfolgen, die nur numerische Zeichen zwischen 0 und 9 enthalten, und fügen Sie die übereinstimmenden Ergebnisse jedes Mal in ein Array $array
ein. Lassen Sie uns var_dump($array)
verwenden, um dieses Array auszugeben und zu sehen:
$array
ein zweidimensionales Array ist und die Elemente die passenden Ergebnisse enthalten sind die inneren Arrays. Wenn Sie diese Elemente zu einer Zeichenfolge zusammenfügen möchten, müssen Sie zwei Ebenen von foreach-Schleifen verschachteln:
In der ersten Ebene der Schleife
weisen Sie$ das innere Array als Wert zu arr
, sodass das Array, das in der zweiten Schleife durchlaufen werden muss, zu $arr
wird. und verwenden Sie dann den Operator „.=
“, um es in die Zeichenfolge $result
einzubinden, sodass $result
zunächst eine leere Zeichenfolge sein muss . 🎜🎜🎜🎜🎜Das Ausgabeergebnis ist: 🎜🎜🎜🎜🎜 Werfen wir einen kurzen Blick auf die Funktion preg_match_all(). Die Funktion 🎜🎜preg_match_all() kann nach allen Ergebnissen in einer Zeichenfolge suchen, die mit einem regulären Ausdruck übereinstimmen können. Ihr Syntaxformat ist 🎜rrreee🎜🎜$pattern regulärer Ausdruck 🎜🎜🎜 $subject Übereinstimmungszeichenfolge 🎜🎜🎜🎜$matches Alle übereinstimmenden Ergebnisse (Array) 🎜🎜🎜🎜preg_match_all() gleicht alle Ergebnisse ab. Wenn Sie den Abgleich nach einem erfolgreichen Abgleich beenden möchten, müssen Sie die Funktion preg_match() verwenden. 🎜🎜Okay, das ist alles. Wenn Sie noch etwas wissen möchten, können Sie hier klicken. → →🎜php-Video-Tutorial🎜🎜🎜 Abschließend empfehle ich die Lektüre eines klassischen Kurses „🎜PHP String Processing (Jade Girl Heart Sutra Edition)🎜“, er ist kostenlos ~ kommen Sie und lernen Sie! 🎜Das obige ist der detaillierte Inhalt vonPHP-String-Learning verwendet reguläre Filter, um Zeichen zu filtern und numerische Zeichen zurückzugeben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!