7 html php parsing string-parsing
所以我有一个有4个输入,2个文本,2个隐藏的表单.我从名称中抓取了两个文本输入值,它们是(get_me_two,get_me_three),我还抓住了表单操作(get_me.php).我现在要做的是抓住2个隐藏的输入,但不是值.我想自己抓住输入.
EG:这是我的表格:
<form action="get_me.php" method="post">
<input type="text" name="get_me_two">
<input type="text" name="get_me_three">
<input type="hidden" name="meta_required" value="from">
<input type="hidden" name="meta_forward_vars" value="0">
</form>
Run Code Online (Sandbox Code Playgroud)
我想从这里抓取的是两个隐藏的输入,而不是值,完整的字符串.
我不知道如何使用这些:PHP简单的HTML DOM解析器,如果有人知道一种方法,那将是伟大的,如果没有,如果有一个替代也会很棒.一旦我抓住这些,我计划将2个输入值传递给另一个带有隐藏字符串的页面,当然还有表单操作.
此外,如果有人感兴趣,这里是我的完整代码,其中包括简单的html dom功能.
<?php
include("simple_html_dom.php");
// Create DOM from URL or file
$html = file_get_html('form_show.php');
$html->load('
<form action="get_me.php" method="post">
<input type="text" name="get_me_two">
<input type="text" name="get_me_three">
<input type="hidden" name="meta_required" value="from">
<input type="hidden" name="meta_forward_vars" value="0">
</form>');
// Get the form action
foreach($html->find('form') as $element)
echo $element->action . '<br>';
// Get the input name
foreach($html->find('input') as $element)
echo $element->name . '<br>';
?>
Run Code Online (Sandbox Code Playgroud)
因此,最终结果将获取3个值,然后是2个隐藏输入(完整字符串).帮助将非常感激,因为它让我有点疯狂试图完成这项工作.
如果您使用DomDocument
,您可以执行以下操作:
<?php
$hidden_inputs = array();
$dom = new DOMDocument('1.0');
@$dom->loadHTMLFile('form_show.php');
// 1. get all inputs
$nodes = $dom->getElementsByTagName('input');
// 2. loop through elements
foreach($nodes as $node) {
if($node->hasAttributes()) {
foreach($node->attributes as $attribute) {
if($attribute->nodeName == 'type' && $attribute->nodeValue == 'hidden') {
$hidden_inputs[] = $node;
}
}
}
} unset($node);
// 3. loop through hidden inputs and print HTML
foreach($hidden_inputs as $node) {
echo "<pre>" . htmlspecialchars($dom->saveHTML($node)) . "</pre>";
} unset($node);
?>
Run Code Online (Sandbox Code Playgroud)