地图上的正则表达式和 Xpath


Regular expressions and Xpath on Maps

我正在尝试使用 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;
}

我要报废的网站有我需要纬度和长度的部分

<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()); 

你的正则表达式不太正确(你需要考虑空格,你不小心转义了左括号)。试试这个(使用在线正则表达式测试器):

/latitude = (['d.-]+)/

Pure 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