[英]PHP content regex between two lines
我試圖使內容存在於兩個JS代碼字符串之間:
strs += '<span>';
strs += '17S32 - TAKATA FRONT AIRBAG INFLATOR - AUSTRALIA'
strs += '17S33 - TAKATA FRONT AIRBAG INFLATOR - AUSTRALIA'
strs += '</span>';
我嘗試了以下不成功的方法:
preg_match('#strs += \'<span>\';(.*?)strs += \'</span>\';#', $html, $matches);
我想要的結果是一個包含以下內容的數組:
array(
0 => '17S32 - TAKATA FRONT AIRBAG INFLATOR - AUSTRALIA',
1 => '17S33 - TAKATA FRONT AIRBAG INFLATOR - AUSTRALIA'
)
這里有一些正則表達式問題:
↓ ↓ ↓
preg_match('#strs += \'<span>\';(.*?)strs += \'</span>\';#', $html, $matches);
+
需要轉義 .
需要#s
標志在換行符之間進行匹配 "
雙引號,以避免逃逸單引號。 但是,僅提取文本並不能提供所需的列表。 一種更簡單的方法是查找真正的字符串附加數據-假設數據有些一致:
preg_match_all("/^\s*strs \+= '((?!<).+)'/m", $src, $matches);
其中(?!<)
僅排除<span>
類的東西。 您可以對預期的字符串內容進行更多的白名單。 顯然,這只有在文本保持一致,不會非常尊重JS語法等情況下才可行。但是,總的來說,這是我認為更簡單的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.