Home  >  Article  >  Backend Development  >  Learn more about php regular expressions

Learn more about php regular expressions

墨辰丷
墨辰丷Original
2018-06-06 09:57:461126browse

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: . \ * ? [ ^ ] $ ( ) { } = ! 6d267e5fab17ea8bc578f9e7e5e1570b | : -

##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 match

Return 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);

The above sample code adds the parameter "PREG_OFFSET_CAPTURE". In this case, there will be one more offset number in $matches. For example, the following "2"

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);

The number of times returned is 2, and there are two matches. Look at the input in the array $matches, there are two. One more than the one above.

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中捕获到。

$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_last_error:

返回最后一个PCRE正则执行产生的错误代码

preg_match(&#39;/(?:\D+|<\d+>)*[!?]/&#39;, &#39;foobar foobar foobar&#39;);
$result = preg_last_error();//PREG_BACKTRACK_LIMIT_ERROR 调用回溯限制超出
print_r($result);

preg_quote:

转义正则表达式字符

返回转义后的字符串

下面的代码中,$subject中有两个需要转义的字符,“.”和“?”。

将$result打印出后是“dd\.a\?a2cc”,而在$result2中,多加了个参数“a”,这样的话“a”也会被转义,“dd\.\a\?\a2cc”

$subject = "dd.a?a2cc";
$result = preg_quote($subject);
$result2 = preg_quote($subject, &#39;a&#39;);
print_r($result);
print_r($result2);

4、模式修正符

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐: 

PHP生成PDF文件的方法

PHP MPDF中文乱码如何解决

PHP判断手机是IOS还是Android的三个方法

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn