我正在使用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文件不是更高效吗?