1

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

2 に答える 2

0

正規表現は完全に正しくありません(空白を考慮する必要があり、誤って左括弧を脱してしまいました)。これを試してください(オンライン正規表現テスターを使用):

/latitude = ([\d.-]+)/
于 2012-05-05T13:17:40.940 に答える
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>

2 つの XPath 式が評価され、結果が出力にコピーされます

-1.283

=======
36.817
于 2012-05-05T15:28:20.343 に答える