pregmatchallphp
㈠ 請問php裡面preg_match與preg_match_all有什麼區別
preg_match只匹配一次,preg_match_all是全文匹配,即所有跟表達式一致的都找出來。
舉個例子:abc
1、取出符號里的字元。preg_match_all("/(\w)+/","abc",$abc);print_r($abc);
顯示結果為
Array( [0] = Array ( [0] = a [1] = b [2] = c )
[1] = Array ( [0] = a [1] = b [2] = c )
)
2、preg_match("/(\w)+/","abc",$abc);print_r($abc);
顯示結果
Array( [0] = a [1] = a)
這兩個函數的區別就是:preg_match_all()搜索匹配全部情況;preg_match()搜索匹配到一個後終止。
preg_match() 返回 pattern 所匹配的次數。要麼是 0 次(沒有匹配)或 1 次,因為 preg_match() 在第一次匹配之後將停止搜索。preg_match_all() 則相反,會一直搜索到 subject 的結尾處。如果出錯 preg_match() 返回 FALSE。
希望我的回答能給你帶來幫助!
㈡ 怎麼用php正則獲得a標簽內的文字啊
php中正則匹配只要使用這兩個函數:
preg_match_all
preg_match
這里使用preg_match_all,代碼如下:
$subject='<ahref="xxx.php">abc測試</a>';//假設這是需要匹配的字元串
$pattern='/<ahref="[^"]*"[^>]*>(.*)</a>/';//這是匹配的正則表達式
preg_match_all($pattern,$subject,$matches);//開始匹配,該函數會把匹配結果放入$matches數組中
echo"<pre>";
print_r($matches);
/**
結果是:
Array
(
[0]=>Array
(
[0]=>abc測試
)
[1]=>Array
(
[0]=>abc測試
)
)
*/
㈢ php採集數據的時候,preg_match_all('/<time>(.*)<\/time>/iUs',$res,$time);
preg_match_all的結果是一個數組,如果需要你可以用var_mp吧$time輸出,然後把你需要的欄位格式化取出來。
㈣ 如何運用PHP函數preg_match_all測試正則表達式效果
php自學網2< /div< div id="biuuu_3"php自學網3< /div'; PHP函數preg_match_all實例要求:分別將每一個DIV元素的ID和內容取出,如biuuu,biuuu_2,biuuu_3,php自學網,php自學網2和php自學網3(一些常用的抓站方法就是這樣匹配的) 分析:字元串是一個簡單的HTML元素,每一個DIV元素對應該一個ID和內容,並且是獨立的,首先考慮如何取出一個DIV內的ID值和內容, 如:php自學網,然後匹配其它類似的元素。一個DIV中需要取出兩個值,也就是兩個匹配的表達式,第一個表達式用於匹配ID值(biuuu),第二個表 達式用於匹配ID的內容(php自學網),正則表達式常用的表達式使用小括弧,那麼前面的元素將會變成如下形式: < div id="(biuuu)"(php自學網)< /div< div id="(表達式1)"(表達式2)< /div 表達式1:[a-zA-Z0-9_]+ (表示匹配大小寫字母,數字和下劃線) 表達式2:[^<]+ (表示不匹配<和字元) 這樣,PHP函數preg_match_all需要匹配的子表達式就實現了,但是還要需要匹配一個的表達式,方法如下: 表達式:/ '"(表達式1)"'(表達式2)/ 注意其中的雙引號"和/需要使用轉義字元轉義,然後把前面兩個表達式放進去,如下: