我搜索了很多关于清除我从链接中抓取的div
的模式。
我使用了这段代码:
foreach ( $html->find('.layout-post-left') as $element ) {
}
获取div,但div
非常长并且有很多数据。
我需要抓取的只是来自此div的两个链接,它们不在JavaScript标记内的href
标记之间。
有人可以给我一个模式,让它与preg_match_all()
一起使用来清除所有混乱并保留http
地址
答案 0 :(得分:0)
如果没有其他链接,并且链接是绝对的并且HTTP(即,它们以http://
开头)和它们在JS字符串中,那么您只需要的是:
$out_array = [];
preg_match_all( "#(['\"])(http://.*?)\\1#", $element_content_string, $out_array );
var_dump($out_array);
第一个链接位于$out_array[2][0]
,第二个链接位于$out_array[2][1]
。
假设$ element_content_string类似于:
$element_content_string = "<script>
var foo = 'http://foo.bar/bax?cz';
var bar = \"http://bax:30\";
</script>";
编辑:从你的例子来看,我对以http开头的链接的假设不适用。因此:
preg_match_all( "#\"file\":\\s*(['\"])(http://.*?)\\1#", $element_content_string, $out_array );