Donato Micele Donato Micele - 1 month ago 9
JSON Question

Get JavaScript var value from a web page

In a php program, I have a web page in $page variable.

...
$page = file_get_contents("http://www.autostrade.it/autostrade-gis/gis.do", false, $context);

$dom = new DOMDocument;
$dom->loadHTML($);
$xpath = new DOMXPath($dom);
...


In this page there are some javascript and I want to take the json data contained in the variable called "evtsVar".

...
<script ...>
...
</script>
<script ...>
...
var evtsVar = {json data}
...
</script>


Use Xpath query is the right method? How can I do to take this variable value?

Thank you all and sorry for my English.

Answer

This is a very specific question about a certain page. I've analyzed the page you have provided the link. There is a variable within a script tag. You want to get that in JSON.

I've used jquery for the solution, strongly recommended for you too.

Get the page first:

<?

$page = file_get_contents("http://www.autostrade.it/autostrade-gis/gis.do", false, $context);

?>

Then get the page in a javascript variable:

var page = <?php echo json_encode( $page ) ?>;

Now we have the page, we should find the string starting with "var evtsVar = ", ending with ";":

var preString = "var evtsVar = ";
var postString = ";";
var preIndex = page.indexOf( preString );
var searchIndex = preIndex + page.substring( preIndex ).indexOf( postString );

var evtsString = page.slice( preIndex + preString.length , searchIndex );

Now get parse the string to a json object and print:

var evtsVar = JSON.parse( evtsString );

console.log( evtsVar );

Tested, works.