使用PHP动态替换HTML元素的内容

时间:2012-01-22 21:15:13

标签: php xml-parsing screen-scraping

我目前需要一种方法来从其他站点获取某些元素,并使用PHP将其内容替换为我自己的内容。

如果网站的网页包含以下表格和div

    <div>Div Contents!</div>

    <table>
      <tr>
        <td>Table Column 1</td>
        <td>Table Column 2</td>
      </tr>
    </table>

我需要能够获取此信息,并将“Div Contents!”,“Table Column 1”和“Table Column 2”替换为我自己的数据。

最好的方法是什么?正则表达式或strpos / str_replace / substr等。

感谢您提供的任何帮助和示例。

3 个答案:

答案 0 :(得分:1)

使用cURL从远程源获取HTML内容,使用正则表达式(preg_match())或一系列字符串操作来提取所需数据,从解析期间分配的变量中以所需格式输出数据

理想情况下,正则表达式的构建和测试速度要快得多,但strpos / substr组合也可以做到这一点。

*我之前已经构建了数据挖掘程序

答案 1 :(得分:0)

  1. 使用cURL
  2. 获取其他网页的HTML
  3. 解析和修改 - 请参阅this question。您很可能希望使用本地PHP库,如XMLReaderDOM
  4. 显示生成的HTML

答案 2 :(得分:0)

// read URL into dom document
$doc = domxml_open_file('http://domain.com/test.php');
// replace content of div
$els = $doc->getElementsByTagName('div');
$els[0]->set_content('new content');
// replace content of tds
$els = $doc->getElementsByTagName('td');
$els[0]->set_content('new content');
$els[1]->set_content('new content');
// echo the final output
echo $doc->saveXML();

备注

  • 以上代码应直接使用网址,而不必使用CURL。
  • 我使用直接方法来改变值(假设你提到的结构是真的)。你应该使用一个循环。