将隐藏的输入作为字符串抓取(使用PHP Simple HTML DOM Parser)

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个隐藏输入(完整字符串).帮助将非常感激,因为它让我有点疯狂试图完成这项工作.

Bjo*_*orn 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)