0

curl を使用して Web サイト (html コード) を解析しています:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://example.com/product.html");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

$content = curl_exec($ch);

<span>今、私は特定のものを見つけたいと思っています。<a>タグにはhrefパラメータが含まれています。このパラメータ ( [eventUid]=22) を preg match で見つけることはできますか? 22データベースから取得した (id) を PHP を使用して変数に保存したいと考えています。

例:

<span><a title="mytitle" href="http://example.com/products.html?tx_example_pi1[eventUid]=22">example</a></span>
if (preg_match('@((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)*)@', $content, $matches)) {
    echo $matches[2];
} else {
    echo 'Nothing found!';
}

現時点では、この preg 検索のリンクしか見つかりませんでした。

4

1 に答える 1

1

正規表現を使用して HTML を検索すると、エラーが発生しやすくなります。そのためには XPath を使用することをお勧めします。

$doc = new DOMDocument;
$doc->loadHTML($content);
$xp = new DOMXPath($doc);

foreach ($xp->query('//span/a[contains(@href, "[eventUid]=")]') as $anchor) {
    if (preg_match('/\[eventUid\]=(\d+)/', $anchor->getAttribute('href'), $matches)) {
        echo $matches[1];
    }
}
于 2013-04-09T08:13:16.970 に答える