• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1692
  • Last Modified:

PHP get values from hidden input fields

Hi Expert,

I like to retreive a variating number of values from An external page and store them in a array.

I belive I'm allmost there but I can't get the array to print its content.
and I only need the value's to be loaded on the array without the HTML.

The source page looks like this:

<html>
<head>
<title>test</title>
</head>
<body>
<input type="hidden" name="token1" value="5UXwe6sMWf5JZQ79B32LeY2">
<input type="hidden" name="token2" value="10sx11SdUKnaDCpd1C6T88i">
<input type="hidden" name="token3" value="92ZbU111xhU4cehCXL9b1Oy">
<input type="hidden" name="token4" value="gjEBf8vo4akmvqG5e6g7jwH">
<input type="hidden" name="token5" value="B8H3jEsE7svP3EC5Rh0nt0s">
<input type="hidden" name="token6" value="JH2nDrp69WQkh11woL695hJ">
</body>
</html>

Open in new window


The data retreiving site :

<?
$url = "http://www.mydomain.nl/tokens.php?num=6";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$output = curl_exec($curl);
curl_close($curl);

$dom = new DOMDocument;
$dom->loadHTML( $output);

    $hidden_inputs = array();

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


    foreach($hidden_inputs as $node) {
        echo "<pre>" . htmlspecialchars($dom->saveHTML($node)) . "</pre>";
    } unset($node);

?>

Open in new window


Now I get this error:
 "Catchable fatal error: Object of class DOMElement could not be converted to string in retreive.php on line 29"

line 29 is the last echo line in the loop
0
Steynsk
Asked:
Steynsk
  • 5
  • 3
1 Solution
 
Ray PaseurCommented:
How sure are you that the test data (first code snippet) is actually representative of the genuine article?
0
 
SteynskAuthor Commented:
Hi Ray,

I don't understand your question/point?

I did discover the error was wrong.

It should be :
Warning: DOMDocument::saveHTML() expects exactly 0 parameters, 1 given in line 29
0
 
Ray PaseurCommented:
I'll be glad to try to show you the code; just want to be sure that I'm using accurate test data.  The sample looks pretty hypothetical.  Can you please post a link to the actual URL you want to read with cURL?
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
Ray PaseurCommented:
Great, thanks.  I'll see what I can do with it and post back with the results.
0
 
Ray PaseurCommented:
This seems to do the trick.  Probably a little more efficient than loading the entire DOM.
http://www.laprbass.com/RAY_temp_steynsk.php

<?php // RAY_temp_steynsk.php
error_reporting(E_ALL);
echo '<pre>';


// SEE http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/Q_28360742.html


//  READ TEST DATA
$url = 'http://www.idiezijn.nl/research/codes.php?usercode=y3J4dpgBPgeldL01odaE6q8&userpass=kn8l4DEuO5uKIpO8Usb5Jfs&num=6&hospital=1';
$str = file_get_contents($url);

// ACTIVATE THIS TO SHOW WHAT WE READ
// echo htmlentities($str);

// A REGULAR EXPRESSION TO MATCH THE VALUE ATTRIBUTES
$rgx
= '#'        // REGEX DELIMITER
. 'value="'  // SIGNAL STRING
. '('        // CAPTURE GROUP
. '.*?'      // ANYTHING
. ')'        // END CAPTURE GROUP
. '"'        // THE ENDING QUOTE
. '#'        // REGEX DELIMITER
. 'i'
;

// PERFORM THE MATCH
preg_match_all($rgx, $str, $mat);

// THE VALUES ARE STORED HERE
print_r($mat[1]);

Open in new window

Best regards, ~Ray
0
 
SteynskAuthor Commented:
Thanks Ray you helped me out big time.

Best regards,

Steynsk
0
 
Ray PaseurCommented:
Great!  Thanks for using EE and best of luck with your project, ~Ray
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 5
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now