特定の属性を持つra divを取得するsnipplrでこの関数が見つかりました。私はそれを使用しようとしましたが、動作しませんでした。それを使用する方法に何か間違っていますか?この関数を使ってdivを取得する方法
http://snipplr.com/view.php?codeview&id=20987
function get_tag($attr, $value, $xml, $tag=null) {
if(is_null($tag))
$tag = '\w+';
else
$tag = preg_quote($tag);
$attr = preg_quote($attr);
$value = preg_quote($value);
$tag_regex = "/<(".$tag.")[^>]*$attr\s*=\s*".
"(['\"])$value\\2[^>]*>(.*?)<\/\\1>/"
preg_match_all($tag_regex,
$xml,
$matches,
PREG_PATTERN_ORDER);
return $matches[3];
}
私はこのようなURLのためにそれを使用するように変更した:
function get_tag($attr, $value, $page, $tag=null) {
if(is_null($tag))
$tag = '\w+';
else
$tag = preg_quote($tag);
$attr = preg_quote($attr);
$value = preg_quote($value);
$tag_regex = "/<(".$tag.")[^>]*$attr\s*=\s*".
"(['\"])$value\\2[^>]*>(.*?)<\/\\1>/";
$page = file_get_contents($page);
preg_match_all($tag_regex,
$page,
$matches,
PREG_PATTERN_ORDER);
return $matches[3];
}
get_tag("class","weather","http://www.masrawy.com","div");
は、どのように私はこれを正しく使用することができますか?
あなたは 'のfile_get_contents()'からのエラー復帰をチェックすべきか? – sarnold
正規表現がうまくいかない理由は、読み込んでいるページで 'class =" weather "'で 'div'がネストされた' div'を含んでいるため、内部divの終了タグは外側のタグではなく、見つかった。間違いなく@ prodigitalsonの答えとしてDOMパーサを使用してください.. – Jacob