The DomDocument class in php can be used to parse html/xml content and build objects that can be queried using standard functions to extract values.
The following functions are quite useful:
getElementsByTagName- Get all elements under a node that match a tagnamegetNamedItem- Get element with a particular "name=" attribute. Useful to find input tags with specific names
The following code snippet will extract all input tag names and values as an associative array, from a given html document text or page.
/*
Generic function to fetch all input tags (name and value) on a page
Useful when writing automatic login bots/scrapers
*/
function get_input_tags($html)
{
$post_data = array();
// a new dom object
$dom = new DomDocument;
//load the html into the object
$dom->loadHTML($html);
//discard white space
$dom->preserveWhiteSpace = false;
//all input tags as a list
$input_tags = $dom->getElementsByTagName('input');
//get all rows from the table
for ($i = 0; $i < $input_tags->length; $i++)
{
if( is_object($input_tags->item($i)) )
{
$name = $value = '';
$name_o = $input_tags->item($i)->attributes->getNamedItem('name');
if(is_object($name_o))
{
$name = $name_o->value;
$value_o = $input_tags->item($i)->attributes->getNamedItem('value');
if(is_object($value_o))
{
$value = $input_tags->item($i)->attributes->getNamedItem('value')->value;
}
$post_data[$name] = $value;
}
}
}
return $post_data;
}
/*
Usage
*/
error_reporting(~E_WARNING);
$html = file_get_contents("https://accounts.google.com/ServiceLoginAuth");
echo "<pre>";
print_r(get_input_tags($html));
echo "</pre>";
Test the above code example on your end and see the output. For any questions let us know in the comments below.
Worked like a charm!. Ty…
Thanks a lot Bro. You saved my day. God Bless.
Thanks lot it’s help me lot..
Good! Thank you…
Thank You very much! GOD bless you.