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

标签 javascript php jquery html

我正在使用 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'}}]

我需要获取(第二个函数中的第3行和第4行)纬度和经度的值,它们是:-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];
}

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

  • 查找“纬度:”
  • 然后我们得到第一组 (),[^\b\n]* 表示除空格或换行符之外的任何内容
  • 获取纬度值和“,经度:”之间的任何值
  • 下一步查找“,经度:”
  • 第三组与前一组一样。我添加了“,”,这样如果经度和“,maptype”之间没有空格,它仍然有效。

这个正则表达式的解释有点困惑,请检查测试链接以获取更详细的解释。

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

关于javascript - 获取 HTML 页面上 javascript 函数中的嵌入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26296953/

相关文章:

javascript - 如何从 core-js 中挑选模块

php - 使用 ZF2 保存到多个表时检查空值

php - 根据所选 div 提交颜色

javascript - Jquery - 文本框接受不超过 24 和 60 的数字

javascript - 制作 div 滚动会导致它抖动

javascript - 强大的用户库,可与 Node.js(javascript) 的示例 java/go 相媲美

javascript - 错误 1 ​​找不到符号 '$'

javascript - 如何提高性能..?

php - 有没有办法将数组绑定(bind)到mysqli prepare

javascript - 添加图库 - document.getElementById ("").innerHTML