簡體   English   中英

兩行之間的PHP內容正則表達式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM