您好,欢迎访问一九零五行业门户网

php正则表达式提取网页超链接url与网页中图片

function match_links($document) { preg_match_all(']+))[^>]*>?(.*?)'isx,$document,$links); while(list($key,$val) = each($links[2])) { if(!empty($val)) $match['link'][] = $val; } while(list($key,$val) = each($links[3])) { if(!empty($val)) $match['link'][] = $val; } while(list($key,$val) = each($links[4])) { if(!empty($val)) $match['content'][] = $val; } while(list($key,$val) = each($links[0])) { if(!empty($val)) $match['all'][] = $val; } return $match; }
复制代码
主要是正则的问题,下面给出个asp.net下的,多测试正则获取页面的链接正则
public string gethref(string htmlcode) { string matchvale = ; string reg = @(h|h)(r|r)(e|e)(f|f) *= *('|)?((\w|\\|\/|\.|:|-|_)+)('|| *|>)?; foreach (match m in regex.matches(htmlcode, reg)) { matchvale += (m.value).tolower().replace(href=, ).trim() + ||; } return matchvale; }
复制代码
例2,php中通过正则表达式下载内容中的远程图片的函数代码
用php正则表达式判断内容中的图片,下载并保存非本域名下的图片的程序这段程序其实是属于“小偷程序”的重要部分。
这一段程序只是下载远程图片的那一段。
if (preg_match_all(/http://[^ ']+[.jpg|.gif|.jpeg|.png]+/ui,stripcslashes($content),$aliurl)){ $i=0; //多个文件++ while(list($key ,$v) = each($aliurl[0])){ //echo $v.
; $filetype = pathinfo($v, pathinfo_extension); //获取后缀名 $ff = @file_get_contents($v); //获取2进制文件内容 if(!stripos($v,jbxue.com)){//判断是否是自己网站下的图片 if (!empty($ff)){ //获取到文件就执行下面的操作 $dir = upload/.date(ymd)./;//指定新的存储路径 if (!file_exists($dir)){//判断目录是否存在 @mkdir($dir,511,true); //创建多级目录,511转换成十进制是777具有可执行权限 } // bbs.it-home.org$nfn = $dir.date(ymdhis).$i...$filetype; //构建文件的新名字 $nf = @fopen($nfn,w); //创建文件 fwrite($nf,$ff); //写入文件 fclose($nf); //关闭文件 $i++; //多文件++ echo ; $content = str_replace($v,$nfn, $content);//替换content中的参数 }else{//获取不到图片则替换为默认图片$content = str_replace($v,/upload/201204/20120417213810742.gif, $content);//替换content中的参数 } } } }
复制代码
例3,php通过正则表达式下载图片到本地。
复制代码
其它类似信息

推荐信息