Таким образом, у меня есть форма, которая имеет 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>'; ?>
в<?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 скрытых входа (полные строки). Помощь была бы очень признательна, поскольку это заставило меня немного рассердиться, пытаясь добиться этого.
Если вы используете 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); ?>
Я не использую SimpleDom (я всегда хожу целиком и использую DOMDocument), но вы не могли бы сделать что-то вроде ->find('input[@type=hidden]')
?
Если SimpleDOM не разрешает этот селектор, вы можете просто перебрать результаты ->find('input')
и выбрать скрытые, сравнив атрибуты самостоятельно.