This article mainly introduces an in-depth understanding of PHP regular expressions. Interested friends can refer to it. I hope it will be helpful to everyone.
php regular expression sharing:
1. Create a regular expression
$regex = '/\d/i';
It's a bit similar to the first method in JavaScript, except that the word here is a string.
2. Special characters in regular expressions
Special characters are: . \ * ? [ ^ ] $ ( ) { } = ! < > | : -
##3. Functions in regular expressions
There are 8 methods,preg_match and preg_match_all, preg_replace and preg_replace_callback, preg_grep, preg_split, preg_last_error and preg_quote.
preg_match:
Perform a regular expression matchReturn the number of matches of pattern. Its value will be 0 times (no match) or 1 time, because preg_match() will stop searching after the first match.
$subject = "dd133aa2"; $pattern = '/\d+/'; preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE); print_r($matches);
preg_match_all:
Performs a "global" regular expression match Returns the complete number of matches (possibly 0), or returns FALSE if an error occurs. $subject and $pattern in the following code are the same as above. The only difference is that preg_match is replaced by preg_match_all.preg_match_all($pattern, $subject, $matches, PREG_OFFSET_CAPTURE); print_r($matches);
preg_replace:
Perform a regular expression search and replace If subject is an array, preg_replace() returns an array, otherwise it returns a string. If a match is found, the replaced subject is returned, otherwise the unchanged subject is returned. If an error occurs, NULL is returned. In the code, $subject is an array with two sets of strings. Next, multiple numbers are replaced with uppercase "Z".$subject = array("dd133aa2", "kk1ff3"); $pattern = '/\d+/'; $result = preg_replace($pattern, 'Z', $subject); print_r($result);
##preg_replace_callback: Perform a regular expression search and use a "callback" to replace
The behavior of this function is to specify a callback instead of replacement to replace characters. The calculation of the string is otherwise equivalent to preg_replace(), including the returned result.
The following code is also replaced with a capital "Z". The content of each $matches in the callback function is the commented part of the code. The first time is 133 and the second time is 2.
$subject = "dd133aa2"; $pattern = '/\d+/'; $result = preg_replace_callback($pattern, function($matches) { //$matches [0] => 133 //$matches [0] => 2 return 'Z'; }, $subject); print_r($result);
preg_grep: Returns the array entries matching the pattern
Returns an array
indexed using the key in the input.In the sample code below, I added "ddsdfd" to the $subject array, which does not contain numbers. When doing matching, I filtered out the ones without numbers.
What $result2 prints is just the opposite. It prints the filtered one, but the key is still 2, not 0.$subject = array("dd133aa2", "kk1ff3", "ddsdfd"); $pattern = '/\d+/'; $result = preg_grep($pattern, $subject); $result2 = preg_grep($pattern, $subject, PREG_GREP_INVERT); print_r($result); print_r($result2);
##preg_split:
Separate strings by a regular expression 返回一个使用 pattern 边界分隔 subject 后得到 的子串组成的数组。 下面代码中,我将$pattern中的表达式加了括号,为了在$result2中捕获到。 preg_last_error: 返回最后一个PCRE正则执行产生的错误代码 preg_quote: 转义正则表达式字符 返回转义后的字符串。 下面的代码中,$subject中有两个需要转义的字符,“.”和“?”。 将$result打印出后是“dd\.a\?a2cc”,而在$result2中,多加了个参数“a”,这样的话“a”也会被转义,“dd\.\a\?\a2cc”$subject = "dd133aa2cc";
$pattern = '/(\d+)/';
$result = preg_split($pattern, $subject);
$result2 = preg_split($pattern, $subject, null, PREG_SPLIT_DELIM_CAPTURE);
print_r($result);
print_r($result2);
preg_match('/(?:\D+|<\d+>)*[!?]/', 'foobar foobar foobar');
$result = preg_last_error();//PREG_BACKTRACK_LIMIT_ERROR 调用回溯限制超出
print_r($result);
$subject = "dd.a?a2cc";
$result = preg_quote($subject);
$result2 = preg_quote($subject, 'a');
print_r($result);
print_r($result2);
4、模式修正符
总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。
相关推荐:
The above is the detailed content of Learn more about php regular expressions. For more information, please follow other related articles on the PHP Chinese website!