我正在使用 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/