0

完全なHTMLドキュメントを扱っているので、URLを抽出する必要がありますが、必要なドメインと一致する場合に限ります

<html>
<div id="" class="">junk
<a href="http://example.com/foo/bar">example.com</a>
morejunk
<a href="http://notexample.com/foo/bar">notexample.com</a>
</div>
</html>

そのジャンクな部分から、example.comの完全なURLを取得する必要がありますが、残りのURL(notexample.com)は取得する必要はありません。それは「http://example.com/foo/bar」またはそれ以上になりますが、もちろんそのurl(bar)witchの最後の部分だけが毎回異なります。

私が十分に明確になったことを願っています、どうもありがとう!

編集:phpを使用

4

1 に答える 1

1

正規表現は、このようなHTMLを解析するために避けなければならないものです。必要なものを取得するDOMパーサーベースのコードは次のとおりです。

$html = <<< EOF
<html>
<div id="" class="">junk
<a href="http://example.com/foo/bar">example.com</a>
morejunk
<a href="http://notexample.com/foo/bar">notexample.com</a>
</div>
</html>
EOF;
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML($html); // loads your html
$xpath = new DOMXPath($doc);
$nodelist = $xpath->query("//a"); // gets all the links
for($i=0; $i < $nodelist->length; $i++) {
    $node = $nodelist->item($i);
    $val = $node->attributes->getNamedItem('href')->nodeValue;
    if (preg_match('#^https?://example\.com/foo/(.*)$#', $val, $m)) 
       echo "$m[1]\n"; // prints bar
}
于 2012-04-19T14:24:04.797 に答える