清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
function get_links($link) { $html = file_get_contents($link); $html = str_replace("\n", "", $html); $html = preg_replace('/<a/i', "\n<a", $html); $html = preg_replace('/<\/a>/', "</a>\n", $html); preg_match_all('/<a\s*.*>.*?<\/a>/', $html, $matches); return($matches); }
在这个例子中,我们想用file_get_contents来取得一个网页的内容。然后用str_replace("\n", "", $html)把所有的换行去掉。再用preg_replace('/<a/i', "\n<a", $html)和preg_replace('/<\/a>/', "</a>\n", $html)来把所有的<a href=".....">.....</a>模式另起一行。最后就用preg_match_all('/<a\s*.*>.*?<\/a>/', $html, $matches)匹配链接模式。/<a\s*.*>.*?<\/a>/就是匹配<a href=".....">.....</a>这种模式的正则表达式。那我们为什么要把<a href=".....">.....</a>链接另起一行呢??因为在/<a\s*.*>.*?<\/a>/模式中,.*是不能匹配换行的,所以就如<a>和</a>不在同一行就不能匹配了!!所以我们要这样做!