在HTML页面上获取javascript函数中的嵌入值


Get embedded values in javascript function on HTML Page

我正在使用php,并试图在javascript函数中获取值。HTML页面中的javascript如下:

<script type="text/javascript">
        function show(q)
        {
            if(q.length > 0)
            {           
                if(q.indexOf("tid") > -1)
                {
                    location.href = "map.jsp?" + q;
                }
                else
                {
                    location.href = "listmap.jsp?" + q;
                }
            }
            return false;
        }
        $(function() { 
            $("#map").goMap({ 
                latitude: -35.331415
                ,longitude: 149.131851
                ,maptype: 'ROADMAP'
                ,scrollwheel: false
                ,zoom: 11
                ,markers: [ {latitude: -35.192103,longitude: 149.332313,icon: 'images/m/marker1.png',html: {content: 'Loading...', ajax: 'mapinfo.jsp?sid=9057'}}]

我需要得到纬度和经度的值(第二个函数中的第三行和第四行),分别是:-35.331415和149.131851

我只是不知道如何获取个人价值观。。。

编辑:我正在使用PHP将这些值保存在变量中,然后稍后将它们写入csv文件目前,我正在使用这个代码(这里有一个狙击坑)来获取其他页面上的所有内容

<?php

$ch = curl_init("http://pvoutput.org/listmap.jsp?sid=312");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$cl = curl_exec($ch);

$dom = new DOMDocument();
@$dom ->loadHTML($cl);
$Lat_data = $dom -> getElementsByTagName("script");
print_r($Lat_data -> item(1) );

编辑2:我通过这样做解决了所有的问题:

$Lat_data = $dom -> getElementsByTagName("script");
$content =$Lat_data -> item(10) -> textContent;
$regex = "/latitude: ([^'b,]*)/"; 
if (preg_match( $regex , $content , $values )) {
echo  $values[1];
$regex2 = "/longitude: ([^'b,]*)/";
}
if (preg_match($regex2, $content, $values2)) {
echo $values2[1];
}

您成功地获得了脚本节点。现在你想要它的内容(javascript代码)

$content = $Lat_data -> item(1) -> textContent

一旦你得到了内容,你可以使用正则表达式解析它,以获得你想要的

$regex = "/latitude: ([^'b'n]*)(.|'n)*,longitude: ([^'b'n,]*)/";
if (preg_match($regex, $content, $values)) {
   echo 'latitude: ' . $values[0];
   echo 'longitue: ' . $values[2];
}

正则表达式解释(此处测试):

  • 查找"纬度:"
  • 然后我们得到第一组(),[^''b''n]*的意思不是空格或换行符
  • 获取纬度值和',经度:'之间的任何值
  • 下一个查找",经度:"
  • 第三组和前一组一样。我添加了",",这样,如果经度和",maptype"之间没有空格,它仍然有效

这个regex解释有点混乱,请查看测试链接以获得更详细的解释。

我还没有测试过,所以可能会有一些语法错误,但想法是存在的;)

实现一点ajax将经度和纬度从js文件提交到php文件不是更高效吗?