用到的函数有
preg_match_all($pattern,$content,$match);
preg_replace($pattern,$replacement,$content,$limit,$count)
思路:
(1)提取超链接部分。
(2)将超链接部分用不不带超链接的文字部分替换。
难点:正则表达式
匹配超链接的正则表达式
$pattern = '/<a.*?href=".*?".*?>(.*?)<\/a>/';
或者
$pattern = '/<a[^>]*>([^<]*)<\/a>/';
上面两种正则表达式都不能匹配一些网页中的全部超链接,原因是什么,我没有分析,不知道。
代码如下:
1 <?php 2 /* 3 preg_relace() 4 清除网页中的超链接,但是保留文字,思路:找出所有的超链接;将超链接用无超链接的文字代替 5 */ 6 $content = file_get_contents('http://www.hao123.com'); 7 8 $result = strip_link($content); 9 echo $result; 10 function strip_link($content) //清除文本中的超链接 11 { 12 /* 13 $pattern = '/<a.*?href=".*?".*?>(.*?)<\/a>/'; 14 */ 15 $pattern = '/<a([^>]*)>([^<]*)<\/a>/'; 16 preg_match_all($pattern,$content,$match); 17 $result = $content; 18 foreach( $match[2] as $value ) 19 { 20 $result = preg_replace($pattern,$value,$result,1); 21 } 22 return $result; 23 }