正規表示式在PHP 中的應用
#在PHP 應用程式中,正規表示式主要用於:
•正規符合:根據正規表示式符合對應的內容
•正規取代:根據正規表示式來配對內容並取代
•正規分割:依正規表示式分割字串
##字串
字串##在PHP 中有兩類正規表示式函數,一類是Perl 相容正規表示式函數,一類是POSIX 擴充正規表示式函數。二者差異不大,而且建議使用Perl 相容正規表示式函數,因此下文都是以 Perl 相容正規表示式函數為範例說明。
定界符
Perl 相容模式的正規表示式函數,其正規表示式需要寫在定界符中。任何不是字母、數字或反斜線()的字元都可以作為定界符,通常我們使用 / 作為定界符。具體使用請見下面的例子。
提示
儘管正規表示式功能非常強大,但如果用普通字串處理函數能完成的,就盡量不要用正規表示式函數,因為正規表示式效率會低得多。關於普通字串處理函數。 preg_match()
preg_match() 函數用於進行正規表示式匹配,成功返回 1 ,否則返回 0 。
語法:
int preg_match( string pattern, string subject [, array matches ] )
說明 | |
正規表示式 | |
需要符合檢索的物件 | #matches |
範例1 :
<?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."; } ?>
#瀏覽器輸出:A match was found: PHP
在這個範例中,由於使用了i 修正符,因此會不區分大小寫去文字中匹配php 。
提示
範例2 ,從一個URL 取得主機網域:
<?php // 从 URL 中取得主机名 preg_match("/^(http://)?([^/]+)/i","http://www.php.cn/index.html", $matches); $host = $matches[2]; // 从主机名中取得后面两段 preg_match("/[^./]+.[^./]+$/", $host, $matches); echo "域名为:{$matches[0]}"; ?>
瀏覽器輸出:
##網域為:php.cn
preg_match_all()
preg_match_all() 函數用於進行正規表示式全域匹配,成功返回整個模式匹配的次數(可能為零),如果出錯返回FALSE 。
語法:
int preg_match_all( string pattern, string subject, array matches [, int flags ] )
參數 | |
---|---|
#pattern | |
subject | |
matches | |
flags
|
<?php
$str = "<pre class="brush:php;toolbar:false">学习php是一件快乐的事。
所有的phper需要共同努力!
";
$kw = "php";
preg_match_all('/([sS]*?)
/',$str,$mat);
for($i=0;$i
正規符合中文漢字依頁面編碼不同而略有差異:
•GBK/GB2312編碼:[x80-xff>]+ 或[xa1-xff]+•UTF-8編碼:[x{4e00}-x{9fa5}]+/u
<?php
$str = "学习php是一件快乐的事。";
preg_match_all("/[x80-xff]+/", $str, $match);
//UTF-8 使用:
//preg_match_all("/[x{4e00}-x{9fa5}]+/u", $str, $match);
print_r($match);
?>
Array ( [0] => Array ( [0] => 学习 [1] => 是一件快乐的事。 ) )######
以上是php:preg_match與preg_match_all用法實例比較的詳細內容。更多資訊請關注PHP中文網其他相關文章!