Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP。有人能帮我准备比赛吗?_Php_Regex_Forms - Fatal编程技术网

PHP。有人能帮我准备比赛吗?

PHP。有人能帮我准备比赛吗?,php,regex,forms,Php,Regex,Forms,我有包含元素的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"&

我有包含元素的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表达式,所以我几乎无法理解它。 我自己用谷歌搜索来理解这些表达,但只能得到一小部分的理解

有人能帮我吗?
致以最诚挚的问候。

使用正则表达式处理HTML通常不是一个好主意。我建议使用HTML解析器。我使用这个库取得了很好的效果:

使用正则表达式来处理HTML通常不是一个好主意。我建议使用HTML解析器。我使用这个库取得了很好的效果:

匹配表单标记的正则表达式可能是这样的:“
(?smi)匹配表单标记的正则表达式可能是这样的:”
(?smi)对于像在html中匹配表单标记这样微不足道的事情,不要使用正则表达式或第三方xhtml解析器

改为使用默认值

简单到:

// 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); 
}
//创建一个新的DOM文档来保存我们的网页结构
$xml=newdomdocument();
//将html的内容加载到DOM中
$xml->loadHTML($html);
$forms=array();
//循环遍历dom中的每个标记,并将其添加到$forms数组中
foreach($xml->getElementsByTagName('form')作为$form){
//获取节点的html字符串
$forms[]=$form->ownerDocument->saveXML($form);
}

其中,
$forms
是每个表单的字符串数组。

对于像在html中匹配表单标记这样琐碎的事情,不要使用正则表达式或第三方xhtml解析器

改为使用默认值

简单到:

// 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); 
}
//创建一个新的DOM文档来保存我们的网页结构
$xml=newdomdocument();
//将html的内容加载到DOM中
$xml->loadHTML($html);
$forms=array();
//循环遍历dom中的每个标记,并将其添加到$forms数组中
foreach($xml->getElementsByTagName('form')作为$form){
//获取节点的html字符串
$forms[]=$form->ownerDocument->saveXML($form);
}

其中,
$forms
是每个表单的字符串数组。

。链接问题的公认答案应该会给你必要的提示。@Linus:别忘了经典的@grawity Yes。我的最爱。在取出XHTML正则表达式鞭子时,我交替使用这一个和另一个。。链接问题的公认答案应该会给你必要的提示。@Linus:别忘了经典的@grawity Yes。我的最爱。取出XHTML-regex-whip时,我在这一部分和另一部分之间交替。(?smi)部分做什么?在Perl正则表达式中,它打开标志以匹配^和$作为行的开始和结束(m),匹配点作为新行字符(s)和大小写instive(I)(?smi)做什么do部分?在Perl正则表达式中,它打开标志以匹配^和$作为行的开始和结束(m),匹配点作为新行字符(s),并在INSTIVE(i)中使用大小写