亚洲欧美日韩综合系列在线_91精品人妻一区二区_欧美大肥婆一级特大AA片_九色91视频免费观看_亚洲综合国产精品_av中文字幕在线不卡_久久精品色综合网_看黄色视频的软件_无卡无码高清中文字幕码2024_亚洲欧美日韩天堂网

php正則表達(dá)式子模式的反向引用學(xué)習(xí)筆記

來源:mailangel123 發(fā)布時(shí)間:2019-04-19 16:03:04 閱讀量:1190

    需要用正則表達(dá)式獲取字符串的標(biāo)題。標(biāo)題標(biāo)簽是h1~h6。

使用正則表達(dá)式:"@<h([1-6])>(.*?)</h\\1>@"或者'<h([1-6])>(.*?)</h\1>@'。使用了@作為分隔符,注意單雙引號的差別\\1與\1.

 

 

1

 

 

 

 

 

 代碼如下 復(fù)制代碼 

<?php

$str='<h1>php php php php php php1</h1><h2>php php php php php php2</h2><h3>php php php php php php3</h3><h4>php php php php php php4</h4>';

preg_match_all("@<h([1-6])>(.*?)</h\\1>@",$str,$all);

print_r($all);

?>

 

 

結(jié)果

Array

(

    [0] => Array

        (

            [0] => <h1>php php php php php php1</h1>

            [1] => <h2>php php php php php php2</h2>

            [2] => <h3>php php php php php php3</h3>

            [3] => <h4>php php php php php php4</h4>

        )

 

 

    [1] => Array

        (

            [0] => 1

            [1] => 2

            [2] => 3

            [3] => 4

        )

 

 

    [2] => Array

        (

            [0] => php php php php php php1

            [1] => php php php php php php2

            [2] => php php php php php php3

            [3] => php php php php php php4

        )

 

 

)

 

 

 

2

 

 

mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])

 

 

功能

 

 

subject 中搜索 pattern 模式的匹配項(xiàng)并替換為 replacement。如果指定了 limit,則僅替換 limit 個(gè)匹配,如果省略 limit 或者其值為 -1,則所有的匹配項(xiàng)都會被替換。

replacement可以包含\\n形式或$n形式的逆向引用,n可以為0到99,\\n表示匹配pattern第n個(gè)子模式的文本,\\0表示匹配整個(gè)pattern的文本。

 

 

子模式

 

 

$pattern參數(shù)中被圓括號括起來的正則表達(dá)式,子模式的數(shù)目即從左到右圓括號的數(shù)目。(pattern即模式)

 

 

 

 

1:最簡單最有用的例子是確定文字中連續(xù)出現(xiàn)兩個(gè)相同單詞的位置

 

 

 代碼如下 復(fù)(www.111cn.net)制代碼 

 

 

<?php 

$string = "Is is the cost of of gasoline going up up"; 

$pattern = "/\b([a-z]+) \\1\b/i"; //這里的\\1不能使用\$1或$1 

$str = preg_replace($pattern, "\\1", $string); //這里的\\1可以使用\$1或$1,引用第一個(gè)子匹配 

echo $str; //效果是Is the cost of gasoline going up 

?>

 

 

 

例中的子表達(dá)式就是圓括號內(nèi)的項(xiàng)。\b匹配單詞的開始或結(jié)束。+匹配重復(fù)一次或更多次。 

該子表達(dá)式匹配的是一個(gè)或多個(gè)字母字符的單詞,即由'[a-z]+'匹配的。

 

 

該正則表達(dá)式的第二部分是對前面所捕獲的子匹配的引用,也就是由附加表達(dá)式所匹配的第二次出現(xiàn)的單詞,用'\\1'來引用第一個(gè)子匹配,第一個(gè)\是轉(zhuǎn)義符。

 

 

i是正則表達(dá)式中的修正符。i:忽略大小寫。

 

 

 

 

3:

 

 

正則表達(dá)式的逆向引用($0-99或\\0-99)和子模式以(/()/)開始。

這里$0是全部匹配模式的匹配項(xiàng)。$1是第1個(gè)子匹配,$2至$99依次是第2個(gè)至第99個(gè)子匹配。

$1-99后向引用子匹配時(shí),如果后面的字符是數(shù)字,要用花括號區(qū)別開。例:${1}1 。

 

 

 代碼如下 復(fù)制代碼 

<?php 

$string = "{April 15, 2003}";

 

 

//'w'匹配字母、數(shù)字和下劃線,'d'匹配0-99數(shù)字,'+'匹配重復(fù)一次或更多次。

$pattern = "/{(\w+) (\d+), (\d+)}/i"; //在字符串中要搜索的匹配項(xiàng)

$replacement1 = "\${1}1,\$3";

$replacement2 = "\$0";

$replacement3 = "\$1";

$replacement4 = "\$2";

$replacement5 = "\$3";

echo "<BR>";

 

 

//字符串被替換為與第n個(gè)被捕獲的括號內(nèi)的子模式所匹配的文本

print preg_replace($pattern, $replacement1, $string);

echo "<BR>";

print preg_replace($pattern, $replacement2, $string);

echo "<BR>";

print preg_replace($pattern, $replacement3, $string);

echo "<BR>";

print preg_replace($pattern, $replacement4, $string);

echo "<BR>";

print preg_replace($pattern, $replacement5, $string);

echo "<BR>";

 

 

//一般表現(xiàn)形式

print preg_replace("/\w+/i","j",$string);

?>

 

 

效果:

April1,2003

{April 15, 2003}

April

15

2003

{j j, j}


標(biāo)簽: PHP 環(huán)境搭建
分享:
評論:
你還沒有登錄,請先