2009-11-20 5 views
0

Comment puis-je extraire l'attribut de valeur d'une balise d'entrée? En utilisant HTML SIMPLE DOM laissez-moi vous donner un exemple:Aide HTML simple DOM

<form action="#" method="post" name="test_form" id="test_form"> 
Name<input type="text" name="name" value="NaMe"/><br /> 

Address<input type="text" name="address" value="AdDrEsS"/><br /> 

<input type="hidden" value="sayantest" /> 
</form> 

Je veux extraire seulement la valeur de la balise d'entrée de type caché, pas les autres.

+0

Quelle langue utilisez-vous pour accéder au DOM? Javascript? –

+0

Parlez-vous de cette bibliothèque PHP? http://simplehtmldom.sourceforge.net/ – Quentin

+0

David: Semble être, oui. tagged – bobince

Répondre

4

Vous voulez mettre l'identifiant (pour que vous puissiez accéder à la valeur en javascript), ainsi qu'un nom (si vous voulez accéder à la valeur sur le serveur) dans l'étiquette dont vous souhaitez obtenir la valeur.

par exemple.

<input type="hidden" name="test" id="test" value="sayantest" /> 

alors votre javascript est aussi simple que:

<script type="text/javascript"> 
    var val = document.getElementById('test').value; 
    alert(val); 
</script> 
+0

+1 Vous pouvez également envisager d'utiliser la bibliothèque jQuery et accéder à vos éléments en utilisant cela. Si vous utilisez jQuery, votre code peut ressembler à ceci: $ ('# test'). Val(); –

+0

Découvrez plus de bases à: http://www.w3schools.com/jsref/met_doc_getelementbyid.asp –

0

La meilleure façon, comme déjà mentionné, est de donner à votre entrée cachée un attribut id puis utilisez getElementById puis .value ou .getAttribute('value') pour sélectionner il.

Alternativement, si vous voulez obtenir les valeurs de toutes les entrées cachées sur la page, ou ne peut pas injecter votre ID, vous pouvez utiliser quelque chose comme ceci:

var inputs = document.getElementsByTagName('input'); 
for(var i = 0; i < inputs.length; i++){ 
    if(inputs[i].getAttribute('type') == 'hidden'){ 
     alert(inputs[i].getAttribute('value')); 
    } 
} 
3

utilisant SIMPLE HTML DOM

Voulez-vous dire la bibliothèque PHP de ce nom?

Si c'est le cas, vous devrez choisir un moyen d'identifier l'entrée. Si vous ne pouvez pas modifier le balisage pour ajouter un id ou name sur l'entrée cachée que vous voulez, vous auriez à venir avec quelque chose comme « obtenir la première entrée avec le type caché sous la forme »:

$html= new simple_html_dom(); 
$html->load('<html><body<form action="#" method="post" name="test_form" id="test_form">Name<input type="text" name="name" value="NaMe"/><br />Address<input type="text" name="address" value="AdDrEsS"/><br /><input type="hidden" value="sayantest" /></form></body></html>'); 

$input= $html->find('#test_form input[type=hidden]', 0); 
$input->value; 
0

Voici ce que j'ai trouvé ... en utilisant exactement ce que vous avez montré dans votre question initiale. Notez que tout ce que je faisais était echo la valeur de toutes les entrées cachées, où test_form.htm est original:

<?php 
function scraping_form() 
{ 
    // create HTML DOM 
    $html = file_get_html('test_form.htm'); 

    // get input hidden value 
    $aObj = $html->find('input[type="hidden"]'); 
    foreach ($aObj as $hKey=>$hidden) 
    { 
    $valueAttribute = $hidden->value; 
    echo "*TEST* ".$hKey.": ".$valueAttribute."<br />"; 
    } 

    // clean up memory 
    $html->clear(); 
    unset($html); 

    return; 
} 
// ----------------------------------------------------------------------------- 
// test it! 
// user_agent header... 
ini_set('user_agent', 'My-Application/2.5'); 
scraping_form(); 
?>