2011-06-27 12 views
6

Así que tengo un formulario que tiene 4 entradas, 2 de texto, 2 ocultos. Agarré los dos valores de entrada de texto del nombre, que son (get_me_two, get_me_three) y también agarré la acción del formulario que es (get_me.php). Lo que estoy buscando hacer ahora es tomar las 2 entradas ocultas, pero no los valores. Quiero tomar las entradas ellos mismos.Asir las entradas ocultas como una cadena (usando PHP Simple HTML DOM Parser)

por ejemplo: Aquí está mi formulario:

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

Y lo que quiero agarrar de aquí es las dos entradas ocultas, no los valores, la cadena completa.

No estoy seguro de cómo obtener estos utilizando PHP PHP HTML DOM Parser, si alguien sabe de una manera que sería genial, si no, si hay una alternativa que también sería genial. Una vez que los he agarrado, planeo pasar los 2 valores de entrada a otra página con las cadenas ocultas, y por supuesto la acción del formulario.

Además, si alguien está interesado aquí está mi código completo, que incluye la funcionalidad simple 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>'; 
?> 

Por lo tanto, el resultado final tomaría los 3 valores, y luego las 2 entradas ocultas (cadenas completas). La ayuda sería muy apreciada ya que me está volviendo un poco loco tratando de hacer esto.

Respuesta

0

Si utiliza DomDocument, se puede hacer lo siguiente:

<?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); 

?> 
+1

DOMDocument :: saveHTML() espera exactamente 0 parámetros obteniendo esto como advertencia –

4

No utilizo SimpleDom (siempre utilizo todo el cerdo y uso DOMDocument), pero ¿no podría hacer algo como ->find('input[@type=hidden]')?

Si SimpleDOM no permite ese tipo de selector, simplemente puede recorrer los resultados de ->find('input') y seleccionar los ocultos comparando los atributos usted mismo.

+0

Tienes las entradas ocultas completos usando (gracias): // Obtener la entrada hiddens foreach ($ html-> find ('input [type = hidden] ') as $ element) echo $ element; Ahora me pregunto cuál es la mejor manera de almacenar estos * individualmente * y pasarlos a otra página. ¿Hay alguna manera de almacenar estos en una variable, cada entrada oculta? –

+0

Guárdelos en una matriz: '$ hidden = array ('meta_required' => xxx, 'meta_forward_vars => yyy);' y úselos para reconstruir las entradas ocultas cuando llegue el momento de compilar la nueva forma. O simplemente guarde los resultados 'find()' en alguna parte y utilícelo como su fuente en lugar de una nueva matriz. –

+0

Hmm, mientras considero que quiero pasar esta información a otra página para mi formulario que ya está pre-estilo, ¿es mejor almacenar esta información en una sesión de algún tipo? No estoy seguro de cómo almacenaría los elementos individualmente en una sesión. –

Cuestiones relacionadas