PHP 正則表示式匹配函式 preg_match 與 preg_match_all
阿新 • • 發佈:2018-11-11
preg_match()
preg_match() 函式用於進行正則表示式匹配,成功返回 1 ,否則返回 0 。
語法:
1 |
int preg_match( string pattern, string subject [,
array
matches ] )
|
引數說明:
引數 | 說明 |
---|---|
pattern | 正則表示式 |
subject | 需要匹配檢索的物件 |
matches | 可選,儲存匹配結果的陣列, $matches[0] 將包含與整個模式匹配的文字,$matches[1] 將包含與第一個捕獲的括號中的子模式所匹配的文字,以此類推 |
例子 1:
1 2 3 4 5 6 7 8 9 |
<?php
if
(preg_match(
"/php/i"
,
"PHP is the web scripting language of choice."
,
$matches
))
{
print "A match was found:"
.
$matches
[0];
}
else
{
print
"A match was not found."
;
}
|
輸出:
1 |
A match was found:PHP
|
在該例子中,由於使用了 i 修正符,因此會不區分大小寫去文字中匹配 php 。
注意:
preg_match() 第一次匹配成功後就會停止匹配,如果要實現全部結果的匹配,即搜尋到subject結尾處,則需使用 preg_match_all() 函式。
例子 2 ,從一個 URL 中取得主機域名 :
1 2 3 4 5 6 7 8 |
<?php
// 從 URL 中取得主機名
preg_match(
"/^(http:\/\/)?([^\/]+)/i"
,
"http://blog.snsgou.com/index.php"
,
$matches
);
$host
=
$matches
[2];
// 從主機名中取得後面兩段
preg_match(
"/[^\.\/]+\.[^\.\/]+$/"
,
$host
,
$matches
);
echo
"域名為:{$matches[0]}"
;
|
輸出:
1 |
域名為:snsgou.com
|
preg_match_all()
preg_match_all() 函式用於進行正則表示式全域性匹配,成功返回整個模式匹配的次數(可能為零),如果出錯返回 FALSE 。
語法:
1 |
int preg_match_all( string pattern, string subject,
array
matches [, int flags ] )
|
引數說明:
引數 | 說明 |
---|---|
pattern | 正則表示式 |
subject | 需要匹配檢索的物件 |
matches | 儲存匹配結果的陣列 |
flags | 可選,指定匹配結果放入 matches 中的順序,可供選擇的標記有:
|
下面的例子演示了將文字中所有 <pre></pre> 標籤內的關鍵字(php)顯示為紅色。
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php
$str
=
"<pre>學習php是一件快樂的事。</pre><pre>所有的phper需要共同努力!</pre>"
;
$kw
=
"php"
;
preg_match_all(
'/<pre>([\s\S]*?)<\/pre>/'
,
$str
,
$mat
);
for
(
$i
= 0;
$i
<
count
(
$mat
[0]);
$i
++)
{
$mat
[0][
$i
] =
$mat
[1][
$i
];
$mat
[0][
$i
] =
str_replace
(
$kw
,
'<span style="color:#ff0000">'
.
$kw
.
'</span>'
,
$mat
[0][
$i
]);
$str
=
str_replace
(
$mat
[1][
$i
],
$mat
[0][
$i
],
$str
);
}
echo
$str
;
?>
|
輸出效果:
簡化一下:
1 2 3 4 5 |
<?php
$str
=
"<pre>學習php是一件快樂的事。</pre><pre>所有的phper需要共同努力!</pre>"
;
preg_match_all(
'/<pre>([\s\S]*?)<\/pre>/'
,
$str
,
$matches
);
print_r(
$matches
);
?>
|
輸出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Array
(
[0] => Array
(
[0] => <pre>學習php是一件快樂的事。</pre>
[1] => <pre>所有的phper需要共同努力!</pre>
)
[1] => Array
(
[0] => 學習php是一件快樂的事。
[1] => 所有的phper需要共同努力!
)
)
|