我使用file_get_contents
從其他網站的HTML頁面,我想提取形式value.Html是這個樣子:用preg_match提取表單值PHP?
<input type='hidden' name='csrfmiddlewaretoken' value='here'>
那麼,如何得到here
使用preg_replace
我是什麼嘗試到目前爲止:
preg_match_all("/'hidden' value='(.*?)'/",$html, $matches);
不行!
我使用file_get_contents
從其他網站的HTML頁面,我想提取形式value.Html是這個樣子:用preg_match提取表單值PHP?
<input type='hidden' name='csrfmiddlewaretoken' value='here'>
那麼,如何得到here
使用preg_replace
我是什麼嘗試到目前爲止:
preg_match_all("/'hidden' value='(.*?)'/",$html, $matches);
不行!
請勿使用正則表達式來解析HTML。使用專門爲此設計的工具。
$previous_value = libxml_use_internal_errors(TRUE);
$string ="<input type='hidden' name='csrfmiddlewaretoken' value='here'>";
$dom = new DOMDocument();
$dom->loadHTML($string);
$input = $dom->getElementsByTagName('input')->item(0);
echo $input->getAttribute("value");
libxml_clear_errors();
libxml_use_internal_errors($previous_value);
如說,在評論,請使用DOM
解析器來代替:
<?php
$data = <<<DATA
<input type='hidden' name='csrfmiddlewaretoken' value='here'>
DATA;
$dom = new DOMDocument();
$dom->loadHTML($data);
$xpath = new DOMXPath($dom);
$input = $xpath->query("//input[@name = 'csrfmiddlewaretoken']/@value")->item(0)->nodeValue;
echo $input;
# here
?>
警告:DOMDocument :: loadHTML():標記節實體中無效,行:66 警告:DOMDocument :: loadHTML():標記頁腳在實體中無效,行:82 警告:DOMDocument: :loadHTML():打開和結束標記不匹配:實體中的頁腳和div,行:116 注意:試圖在 –
中獲取非對象的屬性請幫忙:(( –
這將是一個'DOM'解析器**和** XPath查詢更加容易: '//輸入[@名稱= 'csrfmiddlewaretoken']'。 – Jan
是否還有一些其他值也應該在內容中提取? – RomanPerekhrest