我正在尝试使用xpath从地图中抓取一些信息我需要以下信息纬度和经度。这是我到目前为止的代码
foreach($xpath->query('//script[@type="text/javascript"]') as $table5)
{
$src= $xpath->query('.//text()', $table5)->item(0)->nodeValue;
preg_match('/latitude\/=\([\d.-]+)/', $src, $m);
list(, $lat, $lng) = $m;
}
我正在报废的网站有这个部分,我需要lat和long
<script type="text/javascript">
var latitude = -1.283; ///a need regular expression to get this value -1.283
var longitude = 36.817;
var zoom = 12;
$(document).ready(function(){
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(latitude, longitude), zoom);
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
答案 0 :(得分:0)
你的正则表达式不太正确(你需要考虑空白,并且你不小心逃过了左括号)。试试这个(使用online regex tester):
/latitude = ([\d.-]+)/
答案 1 :(得分:0)
纯XPath :
纬度:
substring-before(substring-after(., 'var latitude = '), ';')
当评估此XPath表达式时(假设提供的script
元素是上下文节点),此评估的结果为:
-1.283
经度:
substring-before(substring-after(., 'var longitude = '), ';')
当评估此XPath表达式时(假设提供的script
元素是上下文节点),此评估的结果为:
36.817
基于XSLT的验证:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:copy-of select=
"substring-before(
substring-after(/*/head/script[1], 'var latitude = '),
';'
)"/>
=======
<xsl:text/>
<xsl:copy-of select=
"substring-before(
substring-after(/*/head/script[1], 'var longitude = '),
';'
)"/>
</xsl:template>
</xsl:stylesheet>
将此转换应用于以下XML文档时:
<html>
<head>
<script type="text/javascript">
var latitude = -1.283; ///a need regular expression to get this value -1.283
var longitude = 36.817;
var zoom = 12;
$(document).ready(function(){
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(latitude, longitude), zoom);
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
</script>
</head>
<body>Hello</body>
</html>
评估两个XPath表达式并将结果复制到输出:
-1.283
=======
36.817