Home  >  Article  >  Backend Development  >  PHP regular expressions Regular functions in PHP_PHP tutorial

PHP regular expressions Regular functions in PHP_PHP tutorial

WBOY
WBOYOriginal
2016-07-20 10:56:51852browse

My introduction to PHP regular expressions originated from an article on the Internet. This article explains the method of using PHP regular expressions from simple to deep. I think it is a good Introductory material, but it still depends on the individual to learn it. In the process of using it, you will continue to forget it, so I read this article over and over again four or five times. For some of the more difficult knowledge points, I even had to It takes a long time to digest it, but as long as you stick with it, you will find that your ability to use regular rules will significantly improve.

Definition of PHP regular expression:

A grammatical rule used to describe character arrangement and matching patterns. It is mainly used for pattern segmentation, matching, search and replacement operations of strings.

Regular functions in PHP:

There are two sets of regular functions in PHP, both of which have similar functions, namely:

One set is composed of PCRE (Perl Compatible Regular Expression ) library provided. Functions named with the prefix "preg_";

A set of functions provided by POSIX (Portable Operating System Interface of Unix) extensions. Use functions named with the prefix "ereg_"; (POSIX regular function library is no longer recommended for use since PHP 5.3, and will be removed from PHP 6)

Due to the upcoming history of POSIX regular function Stage, and the forms of PCRE and perl are similar, which is more convenient for us to switch between perl and php, so here we focus on the use of PCRE regularity.

PCRE regular expression

PCRE stands for Perl Compatible Regular Expression, which means Perl compatible regular expression.

In PCRE, the pattern expression (i.e. regular expression) is usually enclosed between two backslashes "/", such as "/apple/".

Several important concepts in regular expressions are: metacharacters, escapes, pattern units (repetitions), antonyms, references and assertions. These concepts can be easily understood and mastered in the article [1].

Commonly used meta-characters:

Meta-character description

A matches the atom at the beginning of the string

Z matches the atom at the end of the string

b matches the boundary of the word /bis/ matches the string whose head is is /isb/ matches the string /bisb/ whose tail is is delimited

B matches any character except word boundaries /Bis/ matches "is" in the word "This"

d matches a number; equivalent to [0-9]

D Matches any character except numbers; equivalent to [^0-9]

w Matches an English letter, number or underscore; equivalent to [0-9a-zA-Z_]

W matches any character except English letters, numbers and underscores; equivalent to [^0-9a-zA-Z_]

s matches a blank character; equivalent to [ftv]

S matches any character except whitespace characters; equivalent to [^ftv]

f matches a newline character equivalent to x0c or cL

matches a newline character; equivalent Matches a carriage return in x0a or cJ

. Equivalent to a tab in x0d or cM

t; equivalent to a vertical in x09 or cl

v Tab character; equivalent to x0b or ck

oNN matches an octal digit

xNN matches a hexadecimal digit

cC matches a control character

Pattern Modifiers:

Pattern modifiers are especially used in ignoring case and matching multiple lines. Mastering this modifier can often solve the problems we encounter. Got a lot of questions.

i - can match both uppercase and lowercase letters

M - treat the string as multiple lines

S - treat the string as a single line, and treat newlines as ordinary characters , making "." match any character

X - whitespace in the pattern is ignored

U - match the nearest string

e - replace the string as Expressions use the

format: /apple/i matches "apple" or "Apple", etc., ignoring case. /i

PCRE pattern unit:

//1 Extract the first attribute

/^d{2} ( [W])d{2}1d{4}$ matches strings such as "12-31-2006", "09/27/1996", and "86 01 4321". But the above regular expression does not match the format of "12/34-5678". This is because the result "/" of pattern "[W]" has already been stored. When the next position "1" refers to , the matching pattern is also the character "/".

Use the non-storage pattern unit "(?:)" when there is no need to store the matching result

For example /(?:a b c)(D E F)1g/ will match "aEEg ". In some regular expressions, it is necessary to use non-storage mode units. Otherwise, the order of subsequent references needs to be changed. The above example can also be written as /(abbc)(CEF)2g/.

PCRE regular expression function:

preg_match()和preg_match_all()
preg_quote()
preg_split()
preg_grep()
preg_replace()

The specific use of the function can be found through the PHP manual. Here are some regular expressions accumulated in daily life:

Match action attribute

$str = '';
$match = '';
preg_match_all('/s+action="(?!http:)(.*?)"s/', $str, $match);
print_r($match);

Use callback function in regular expression

/**
* replace some string by callback function
*
*/
function callback_replace() {
$url = 'http://esfang.house.sina.com.cn';
$str = '';
$str = preg_replace ( '/(?<=saction=")(?!http:)(.*?)(?="s)/e', 'search($url, 1)', $str );

echo $str;
}

function search($url, $match){
return $url . '/' . $match;
}

Regular matching with assertion

$match = '';
$str = 'xxxxxx.com.cn bold font
paragraph text

';
preg_match_all ( '/(?<=<(w{1})>).*(?=)/', $str, $match );
echo "匹配没有属性的HTML标签中的内容:";
print_r ( $match );

Replace the address in the HTML source code

$form_html = preg_replace ( '/(?<=saction=" ssrc=" shref=")(?!http: javascript)(.*?)(?="s)/e', 'add_url($url, '1')', $form_html );

Finally, although the regular tool Powerful, but in terms of efficiency and writing time, sometimes it may not be more direct than explode. For some urgent or undemanding tasks, a simple and crude method may be better.

As for the execution efficiency between the preg and ereg series, I once saw an article saying that preg is faster. This is because ereg is not used much, and it is about to be launched on the historical stage. I personally prefer the PCRE method, so I will not make a comparison. Friends who are familiar with it can express their opinions, thank you.


www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/445820.htmlTechArticleMy introduction to PHP regularization originated from an article on the Internet. This article explains it from simple to deep. I think the method used by PHP regular expressions is a good introductory material, but...
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