PHP html正则提取div数据

html-css020

PHP html正则提取div数据,第1张

正则提取div数据主要是使用PHP的file_get_content()函数。

具体示例:

HTML代码:

<div class="chartInfo">  

 <div class="line"></div>

 <div class="tideTable">  

     <strong>潮汐表</strong>数据仅供参考

     <table width="500" border="0" cellspacing="0" cellpadding="0"> 

       <tbody><tr>  

  <td width="100"><p><span>潮时 (Hrs)</span></p></td>  

     <td width="100"><p>00:58</p></td>

     <td width="100"><p>05:20</p></td>

     <td width="100"><p>13:28</p></td>

     <td width="100"><p>21:15</p></td>

          </tr>  

       <tr>  

  <td><p><span>潮高 (cm)</span></p></td>  

     <td width="100"><p>161</p></td>  

     <td width="100"><p>75</p></td>  

     <td width="100"><p>288</p></td>  

     <td width="100"><p>127</p></td>  

          </tr>  

     </tbody></table>  

    <h2>时区:-1000 (东10区)  潮高基准面:在平均海平面下174CM</h2>  

       </div>  

 <div class="chart">  

 </div>  

</div>

首页先用file_get_content或curl获取内容部分

PHP的正则处理程序:

<?php

$ch = curl_init()  

curl_setopt($ch, CURLOPT_URL, $url)  

curl_setopt($ch, CURLOPT_POST, 1)  

curl_setopt( $ch, CURLOPT_HEADER, 0 )  

curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 )  

curl_setopt( $ch, CURLOPT_POSTFIELDS, $data )  

$return = curl_exec( $ch )  

curl_close( $ch )  

 

$regex4="/<div class=\"tideTable\".*?>.*?<\/div>/ism"  

if(preg_match_all($regex4, $return, $matches)){  

   print_r($matches)  

}else{  

   echo '0'  

}

?>

通过仔细阅读问题描述,样本采用 html 格式编写,其内容为中英文互译,如问题所要求的:“正文中的,英文单词都匹配出来”。

提供一下思路:

建议可以将问题简化一下,即只取正文中的英文部分。

通过观察如上提供的样本中,大部分的英文部分都以标签 <div class="set_en">...</div>(其中有一个 div 标签没有配对) ,则步骤如下:

1、先编写正则取出标签中的内容:

2、再对每个英文句子,取出其中的单词:

$str = '<span style=\"font-family:\'Arial\',\'sans-serif\'font-size:9pt\">test</span>'

//$str=stripslashes($str)

$str = preg_replace('#<([^>\s/]+)[^>]*>#','<$1>',$str)

echo htmlspecialchars($str)."<br/>"