0

<pre>タグのコンテンツ内の Web ページを破棄する必要があります。関数を使用してpreg_match_allいますが、機能していません。

私のスクレイピング Web サイト<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;
?>
4

2 に答える 2

2

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 Simple HTML DOM Parser を試してください。http://simplehtmldom.sourceforge.net/ を参照してください。

于 2013-07-22T08:35:33.527 に答える
0

ついにできた。このhttp://www.infiltrated.net/blacklistedの URL は 1 つのテキスト ファイルから読み込まれているため、ページ ソースには pre タグのみが表示されます。だから私はこの方法を使用しています。

$array = explode("\n", file_get_contents('http://www.infiltrated.net/blacklisted'));
print_r($array);

最後に、そのワーキンググリーティング。

于 2013-07-22T11:00:33.237 に答える