[2 days left] What’s wrong with your cloud strategy? Learn why multicloud solutions matter with Nimble Storage.Register Now

x
?
Solved

PHP get values from hidden input fields

Posted on 2014-02-10
8
Medium Priority
?
1,632 Views
Last Modified: 2014-02-10
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
Comment
Question by:Steynsk
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 3
8 Comments
 
LVL 111

Expert Comment

by:Ray Paseur
ID: 39847091
How sure are you that the test data (first code snippet) is actually representative of the genuine article?
0
 
LVL 1

Author Comment

by:Steynsk
ID: 39847101
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
 
LVL 111

Expert Comment

by:Ray Paseur
ID: 39847112
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
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
LVL 111

Expert Comment

by:Ray Paseur
ID: 39847329
Great, thanks.  I'll see what I can do with it and post back with the results.
0
 
LVL 111

Accepted Solution

by:
Ray Paseur earned 2000 total points
ID: 39847376
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
 
LVL 1

Author Closing Comment

by:Steynsk
ID: 39847428
Thanks Ray you helped me out big time.

Best regards,

Steynsk
0
 
LVL 111

Expert Comment

by:Ray Paseur
ID: 39847630
Great!  Thanks for using EE and best of luck with your project, ~Ray
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

3 proven steps to speed up Magento powered sites. The article focus is on optimizing time to first byte (TTFB), full page caching and configuring server for optimal performance.
There are times when I have encountered the need to decompress a response from a PHP request. This is how it's done, but you must have control of the request and you can set the Accept-Encoding header.
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.
Suggested Courses

656 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question