Home  >  Article  >  Backend Development  >  PHP regular expression study notes_php skills

PHP regular expression study notes_php skills

WBOY
WBOYOriginal
2016-05-16 20:04:491325browse

PHP regular expression study notes sharing:

1. Create a regular expression

$regex = '/d/i';
It's a bit like the first method in JavaScript, except here the word is a string.

2. Special characters in regular expressions

Special characters include: . * ? [ ^ ] $ ( ) { } = ! 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

Returns the number of matches of pattern. Its value will be 0 times (no match) or 1 time, because preg_match() will stop searching for after the first match of .

$subject = "dd133aa2";
$pattern = '/\d+/';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);

The above example 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:

Perform a "global" regular expression match

Returns the complete number of matches (possibly 0), or FALSE if an error occurs.

$subject and $pattern in the code below 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 $matches array, 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:

Performs a regular expression search and replaces using a "callback"

Except that you can specify a callback instead of replacement to calculate the replacement string, the behavior of this function is equivalent to preg_replace() in other aspects, 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 array entries that match the pattern

Returns an array indexed using the key in the input as .

In the sample code below, I added "ddsdfd" to the $subject array, which does not contain numbers. When doing the 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:

通过一个正则表达式分隔字符串

 

返回一个使用 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('/(&#63;:\D+|<\d+>)*[!&#63;]/', 'foobar foobar foobar');
$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&#63;a2cc";
$result = preg_quote($subject);
$result2 = preg_quote($subject, 'a');
print_r($result);
print_r($result2);

4、模式修正符

以上就是关于php正则表达式的全部内容介绍,希望对大家的学习有所帮助。

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