Получение скрытых входных данных в виде строки (с использованием PHP Simple HTML DOM Parser) - PullRequest
7 голосов
/ 27 июня 2011

Итак, у меня есть форма, которая имеет 4 ввода, 2 текста, 2 скрытых. Я взял два значения ввода текста из имени, которые являются (get_me_two, get_me_three), и я также захватил действие формы, которое (get_me.php). Теперь я хочу получить 2 скрытых ввода, но не значения. Я хочу захватить сами входы.

Е.Г .: Вот моя форма:

<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>

И здесь я хочу получить два скрытых ввода, Не значения, полная строка .

Я не уверен, как получить их, используя: PHP Simple HTML DOM Parser, если кто-нибудь знает способ, который был бы хорош, если нет, если есть альтернатива, которая также была бы великолепна. Как только я соберу их, я планирую передать 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>';
?>

Итак, конечный результат будет содержать 3 значения, а затем 2 скрытых ввода (полные строки). Помощь будет высоко ценится, так как она сводит меня с ума, пытаясь сделать это.

Ответы [ 2 ]

4 голосов
/ 27 июня 2011

Я не использую SimpleDom (я всегда хожу и использую DOMDocument), но разве вы не можете сделать что-то вроде ->find('input[@type=hidden]')?

Если SimpleDOM не допускает такого рода селектор, вы можете просто циклически просмотреть результаты ->find('input') и выбрать скрытые, сравнивая атрибуты самостоятельно.

2 голосов
/ 27 июня 2011

Если вы используете DomDocument, вы можете сделать следующее:

<code><?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)) . "
"; } unset ($ узел); ?>
...