我有包含元素的HTML代码。 我想要做的是,我需要这个表单元素的整个html代码。 例如,在下面的html代码中
...
<p>Sample</p>
<img src="..." />
<form method="post" >
<input type="hidden" value="v1" id="v1" name="task">
<input type="hidden" value="v2" name="v2">
...
</form>
<div>...</div>
...
我想提取这些代码:
<form method="post" >
<input type="hidden" value="v1" id="v1" name="task">
<input type="hidden" value="v2" name="v2">
...
</form>
由于我对preg_match表达不太熟悉,我几乎无法理解。 我用Google搜索了解自己的表达方式,但只能抓住一小部分。
请问有人帮帮我吗? 最好的问候。
答案 0 :(得分:2)
与表单标记匹配的常规尝试可能如下所示:“(?smi)<form.*?</form>
”
编辑1 :在PHP中,函数调用如下所示:preg_match('/^.*?<form.*?<\/form>.*$/smi', $data)
编辑2 :可在此处测试:http://www.spaweditor.com/scripts/regex/index.php
但在一般情况下,我也不建议使用正则表达式来解析HTML代码。
答案 1 :(得分:1)
对于像在html中匹配表单标记一样简单的东西,只是不要使用正则表达式或第三方xhtml解析器。
改为使用默认的DOM Parser。
这很简单:
// Create a new DOM Document to hold our webpage structure
$xml = new DOMDocument();
// Load the html's contents into DOM
$xml->loadHTML($html);
$forms = array();
//Loop through each <form> tag in the dom and add it to the $forms array
foreach($xml->getElementsByTagName('form') as $form) {
//Get the node's html string
$forms[] = $form->ownerDocument->saveXML($form);
}
其中$forms
是每个表单的字符串数组。
答案 2 :(得分:0)
使用正则表达式处理HTML通常不是一个好主意。我宁愿建议使用HTML解析器。我对这个库有很好的结果:http://simplehtmldom.sourceforge.net/