解析字符串寻找特定标记的更好方法

时间:2012-08-30 09:17:28

标签: php str-replace explode

我正在查看页面源代码,基本上想要获取“og:image”图像网址

我正在使用以下内容,它有效,我认为(除了相对URL问题)涵盖所有可能性 - 但它可能不是最有效的方法 - 我已经评论代码以显示每行是什么做($ html是源代码):

$og_img = explode( '<meta property="og:image" content=', $html); // strip out beginning
$og_img = explode('>', $og_img[1]); // strip out end
if(substr($og_img[0], -1)=='/'){ $og_img[0] = substr($og_img[0], 0, -1); } // strip / if used /> to close the tag
$og_img[0] = str_replace("'", "", $og_img[0]); // strip ' ... ' apostrophes if used
$og_img[0] = str_replace('"', '', $og_img[0]); // strip " ... " doubke quotes if used

有更有效的方法吗?

1 个答案:

答案 0 :(得分:0)

不要自己滚动。

使用DOM。例如。

$doc = new DOMDocument();
@$doc->loadHTML($html);
$metas = $doc->getElementsByTagName('meta');
for ($i = 0; $i < $metas->length; $i++)
{
    $meta = $metas->item($i);
    if($meta->getAttribute('property') == 'og:image')
        $og_image_content = $meta->getAttribute('content');
}

或(虽然没试过)使用:

get_meta_tags()