我需要废弃
<pre>
标签内容中的网页。我正在使用 preg_match_all
功能,但它不起作用。
我的抓取网站
<pre>
标签内容如下。
<pre># Mon Jul 22 03:10:03 CDT 2013
99.46.177.18
99.27.119.169
99.254.168.132
99.245.96.210
99.245.29.38
99.240.245.97
99.239.100.211
<pre>
PHP 文件
已更新
$data = file_get_contents('http://www.infiltrated.net/blacklisted');
preg_match_all ("/<pre>([^`]*?)<\/pre>/", $data, $matches);
print_r($matches);
exit;
我的 php 文件返回空数组。我知道我的
preg_match_all
功能有问题。
如何获取预标记内容。请指导我。
编辑问题
我可以运行@Pieter 脚本。但它的回报只有
Array()
我的脚本如下。
<?php
$url = 'http://www.infiltrated.net/blacklisted';
$data = new DOMDocument();
$data->loadHTML(file_get_contents($url));
$xpath = new DomXpath($data);
$pre_tags = array();
foreach($xpath->query('//pre') as $node){
$pre_tags[] = $node->nodeValue;
}
print_r($pre_tags);
exit;
?>
使用 PHP 函数循环 DOM。强烈建议不要对 HTML 标签使用正则表达式模式。
试试这个代码:
$data = new DOMDocument();
$data->loadHTML(file_get_contents($url));
$xpath = new DomXpath($data);
$pre_tags = array();
foreach($xpath->query('//pre') as $node){
$pre_tags[] = $node->nodeValue;
}
或者尝试 PHP 简单 HTML DOM 解析器,请参阅:http://simplehtmldom.sourceforge.net/
我终于明白了。此 http://www.infilterated.net/blacklisted 网址是从一个文本文件加载的。因此,页面源代码中仅显示 pre 标记。所以我正在使用这个方法。
$array = explode("\n", file_get_contents('http://www.infiltrated.net/blacklisted'));
print_r($array);
终于迎来工作问候了。