[英]preg_match_all multiple pattern leaves empty array values
我試圖了解帶有多個模式的preg_match_all
,所以我創建了html字符串變量和模式。
諸如修整之類的一切工作都很好,但是由於有多個模式,它會輸出一些具有空值的數組鍵。 如果您知道為什么會這樣,請告訴我並告訴我必須如何解決。
我的代碼:
<?php
$cource = "<div><a href='test1'> <img src=\"test2\" /> <img src='test3' > <script src='test4'> <link href='test5'> </div>";
preg_match_all('/src=["\']([^"\']+)|href=\'([^\']+)/',$cource, $result);
var_dump($result);
?>
輸出:
由於使用兩個捕獲組,您將獲得空值,
src
href
因此,您將根據數據獲取空值,因為第一個元素具有屬性href
,而src
空(因為它沒有),依此類推。
您可以在一個捕獲(第二個)組中獲取結果,剩下的第一個用於獲取從中獲取什么屬性的參考。
$cource = "<div><a href='test1'> <img src=\"test2\" /> <img src='test3' > <script src='test4'> <link href='test5'> </div>";
preg_match_all('/(href|src)=["\']([^"\']+)/',$cource, $result);
如果不需要引用屬性,可以使用非捕獲組?:
preg_match_all('/(?:href|src)=["\']([^"\']+)/',$cource, $result);
實際中: https : //eval.in/580585
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.