php 正则替换掉网页中所有超链接,过滤网页中所有Url

在php中我们经常会需要把字符串中的超级链接地址与url给过滤掉,下面我来利用php正则功能实现替换掉网页中所有超链接与url实例.

正则替换掉网页中所有超链接,代码如下:

  1. <?php
  2. $content = file_get_contents('test.html');
  3. $url = 'http://www.phpfensi.com'; //要换成的新网址
  4. $preg = '/[s]href=("|')[S]*("|')/i';
  5. $replace = ' href="' . $url . '"';
  6. $content = preg_replace($preg, $replace, $content); //正则替换
  7. create_log('newhtml', $content); //生成新文件
  8. ?>

下面是写文件操作,代码如下:

  1. function create_log($filename, $text) {
  2. if ( strtolower(substr($filename, -4)) != 'html' ){
  3. $filename .= '.html';
  4. }
  5. $filename = dirname ( __FILE__ ) . '/' . $filename;
  6. if (!file_exists ( $filename )) {
  7. exec( 'touch '. $filename);
  8. exec( 'chmod 777 '. $filename);
  9. }
  10. $handle = fopen ( $filename, "w+b" );
  11. $text .= "rn";
  12. fwrite($handle, $text);
  13. fclose ( $handle );
  14. }

下面一个简单的采集功能,代码如下:

  1. $url ='http://www.phpfensi.com';
  2. $body=@file_get_contents($url);
  3. preg_match_all('/href=['"]?([^'"]*)['"]?>(.*)/i',$body,$b);
  4. $nums = array();
  5. foreach($b[1] as $u){
  6. if(in_array($u,$nums)){
  7. continue;
  8. }
  9. $nums[]=$u;
  10. $title=strip_tags($u);
  11. echo $title."</br>";
  12. }