Php 刮削地址&;电话号码及;地图

Php 刮削地址&;电话号码及;地图,php,regex,Php,Regex,我有下面的HTML <div class="fiche-detail"> <div class="ColG"> <div class="ColG1"> <div class="bloc-info"> <h2 class="titre filet-bottom3">Coordinates</h2> <p>

我有下面的HTML

<div class="fiche-detail">
      <div class="ColG">
         <div class="ColG1">
            <div class="bloc-info">
               <h2 class="titre filet-bottom3">Coordinates</h2>
               <p>
                  555, avenue du Pont Nord<br />
                  Alma, Québec<br />
                  G8B6T5                                  
               </p>
               <p>
                  Phone number&nbsp;: 418 668-4657                   <br />
                  Fax&nbsp;:  418 668-2770                   
               </p>
            </div>
        </div>
    </div>
<div>

协调

北杜邦大道555号
魁北克省阿尔马市
G8B6T5

电话号码:418668-4657
传真:418668-2770

加载自:

我正在尝试提取以下详细信息并将其加载到“storedetails”数组中:

  • 街道号码(555)

  • 街道(北杜邦大道)

  • 城市(阿尔马)

  • 州(魁北克省)

  • 邮政编码(G8B6T5)

  • 电话号码

  • 传真

  • 坐标(从底部的js,也从上面的页面加载)

  • regex是唯一的解决方案还是有更好的方法,至少知道每个地址的长度可能不同

    如果正则表达式是唯一的方法,那么是否有可能获得一些指针。我不确定我应该从标签开始写多远。喜欢from,因为这是该特定标记自上而下的第一个实例

    谢谢

    <script type="text/javascript">   
       dojo.addOnLoad(function(){
          var mapCenter = new google.maps.LatLng(48.55970, -71.63980);
          var optionsList = {
             zoom: 16,
             center: mapCenter,
             mapTypeId: google.maps.MapTypeId.ROADMAP
          };
          var map = new google.maps.Map(document.getElementById("GoogleMap"), optionsList);
    
          var storeMarker = new google.maps.Marker({
             position: mapCenter,
             map: map,
             icon: image
          });
       }); 
    </script>
    
    
    dojo.addOnLoad(函数(){
    var mapCenter=newgoogle.maps.LatLng(48.55970,-71.63980);
    变量选项列表={
    缩放:16,
    中心:地图中心,
    mapTypeId:google.maps.mapTypeId.ROADMAP
    };
    var map=new google.maps.map(document.getElementById(“GoogleMap”),optionsList);
    var storeMarker=new google.maps.Marker({
    位置:地图中心,
    地图:地图,
    图标:图像
    });
    }); 
    
    一般来说,从网页的纯HTML中读取数据是非常危险的,如果有其他可能,就不应该这样做。最大的问题是,你永远不知道网页什么时候会被更改,或者你得到的数据结构是否正确

    在您的示例中,您不知道数据将具有给定的结构:

    [STREET_NR], [STREET]<br />
    [CITY], [STATE]<br />
    [POST_CODE]  
    
    [街道],[街道]
    [城市],[州]
    [邮政编码]

    因此,最好的方法是联系SAQ,询问他们是否提供API

    您可能需要使用正则表达式解析器来提取每个感兴趣的
    ,然后使用正则表达式来区分不同的地址组件。您好,所以我提出了以下建议:(\d+),(\d+),(\d+)\s(\d+)\s+(\d\d\d\d\d)\s+。似乎得到了我想要的最多。另一个问题是,是否可以将()所包含的每个正则表达式匹配组输出到我所说的数组中。试图用谷歌搜索,但似乎找不到正确的关键字。@Senri您想用
    PHP
    HTML
    中提取数据吗?