0

このulを受け入れるスクリプトが必要です:

<ul id="activitylist">
    <li class="activitybit forum_thread">
        <div class="avatar"> <img alt="secret team's Avatar" src="images/misc/unknown.gif" title="secret team's Avatar"> </div>
        <div class="content hasavatar">
        <div class="datetime"> <span class="date">Today,&nbsp;<span class="time">11:25pm</span></span> </div>
        <div class="title"> <a class="username" href="member.php/436070-secret-team">secret team</a> started a thread <a href="showthread.php/415403-Allow-VIDEO-Code-missing-in-settings">'Allow [VIDEO] Code' missing in settings</a> </div>
        <div class="views">0 replies | 0 view(s)</div>
    </li>
</ul>

1つのulに10~15匹の子李がいます。スレッドの返信が 0 件のすべての子 li のスレッド名が必要です。上記の一例を掲載しました。その例では、次のテキストが必要です。

'Allow [VIDEO] Code' missing in settings

この div にはテキストとして 0 件の返信があります。

 <div class="views">0 replies | 0 view(s)</div>

このサンプル コードがありますが、正しく動作しません。

<?php
$request_url = 'https://www.vbulletin.com/forum/activity.php';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $request_url); // The url to get links from
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // We want to get the respone
$result = curl_exec($ch);

$sPattern = "/<li class=\"activitybit forum_thread\">(.*?)<\/li>/s";
preg_match_all($sPattern, $result, $parts);
$links = $parts[1];
foreach ($links as $link) {
    if (stripos($link, "0 replies") !== false) {
        echo $link . "<br>";
    }
}
curl_close($ch);
?>
4

1 に答える 1

3

あらゆる種類のHTMLを解析する正規表現は次のとおりです。

$regex = new DOMDocument;
$regex->loadHTML($html);

今深刻です。DOMDocumentはすべてのHTMLを解析しました。これで、これらの関数とこれらの関数を使用して、タグをウォークオーバーし、それらの属性とコンテンツを抽出できます。ただし、 DOMXPathと呼ばれるコンパニオンクラスを使用する方がはるかに簡単です。

$xpath = new DOMXpath($regex);
foreach ($xpath->query("//ul[@id='activitylist']/li") as $li) {
    $view = $xpath->query(".//div[@class='views']", $li)->item(0);
    $link = $xpath->query(".//div[@class='title']/a", $li)->item(1);
    if (preg_match("/0 replies/", $view->nodeValue)) {
        echo $link->nodeValue . " (" . $link->getAttribute("href") . ")\n";
    }
}

これにより、HTMLが完全ではないという警告がいくつか出力されます。

'Allow [VIDEO] Code' missing in settings (showthread.php/415403-Allow-VIDEO-Code-missing-in-settings)

使用についてもっと読むことができます正規表現ここでHTMLを解析するPHP 。XPathの例の包括的なリストは、こちらから入手できます

于 2013-01-15T08:30:51.050 に答える