[英]PHP regex to return <option> values
我只是想知道您是否可以通過一些我想在php中完成的小任務來幫助我。
我的文件中的文本看起來像這樣:
(random html)
...
<OPTION VALUE="195" SELECTED>Physical Chem
<OPTION VALUE="239">Physical Chem Lab II
<OPTION VALUE="555">Physical Chem for Engineers
...
(random html)
我想返回選項值的#值,而忽略其他所有內容。 例如,在上述情況下,我希望返回195、239和555,其他都沒有,例如“ Option Value =“。
我在使用PHP時遇到麻煩。 到目前為止,我有這個:
preg_match("/OPTION VALUE=\"([0-9]*)/", $data, $matches);
print_r($matches);
用這個的返回值:
數組([0] => OPTION VALUE =“ 195 [1] => 195)數組([0] => OPTION VALUE =” 195 [1] => 195)
我該如何退回所有的#號?
我是模式匹配的新手,我讀過的教程並沒有太大幫助,所以非常感謝!
preg_match將返回僅包含第一個匹配項的數組。 數組的第一個索引將返回完整正則表達式的匹配項,第二個索引將匹配括號中的捕獲組,請嘗試以下操作以了解其工作原理:
preg_match("/(OPTION) VALUE=\"([0-9]*)/", $data, $matches);
print_r($matches);
您將看到它輸出以下內容:
Array
(
[0] => OPTION VALUE="195
[1] => OPTION
[2] => 195
)
數組[0]包含完全匹配的數據,數組[1]包含來自第一個捕獲組(OPTION)的數據,數組[2]包含來自第二個捕獲組([0-9] *)的數據。
為了匹配多個事件,您需要使用preg_match_all函數。 如果我們將其應用到您的原始代碼中,如下所示:
preg_match_all("/OPTION VALUE=\"([0-9]*)/", $data, $matches);
print_r($matches);
我們得到:
Array
(
[0] => Array
(
[0] => OPTION VALUE="195
[1] => OPTION VALUE="239
[2] => OPTION VALUE="555
)
[1] => Array
(
[0] => 195
[1] => 239
[2] => 555
)
)
我希望這可以使事情變得清楚!
我認為您做對了。 PHP會在[0]中返回完全匹配項,然后將捕獲的組(括號)作為其他組。
檢查一下: http : //xrg.es/#15m7krv
嘗試這個:
preg_match_all('/OPTION VALUE=\\"([0-9])+\\"/', $data, $matches);
編輯
誤解了你的問題。 更改為preg_match_all()
嘗試使用preg_match_all()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.