PHP168不能像dedecms一样在编写采集规则的时候添加正则表达式过滤掉超链接、JS等。我们只需要稍微修改一个PHP168的程序,即可一劳永逸,下面说详细的方法。
首先打开php168里面的admin/gather.php,查找
- 代码:
//文章结尾做正则处理
在其上面添加下面的代码
- 代码:
//文章内容自动过滤开始
$search = array ("'<script[^>]*?>.*?</script>'si",//过滤SCRIPT标记
"'<iframe[^>]*?>.*?</iframe>'si", //过滤IFRAME标记
"'<style[^>]*?>.*?</style>'si",//过滤STYLE标记
"'<[\/\!]*span[^<>]*?>'si",//过滤SPAN标记
"'<[\/\!]*font[^<>]*?>'si",//过滤FONT标记
"'<[\/\!]*a[^<>]*?>'si",//过滤A标记,如果要过滤链接中的字,必须在过滤规则中写下。
"'<[\/\!]*div[^<>]*?>'si",//过滤DIV标记
"'<[\/\!]*table[^<>]*?>'si",//过滤TABLE标记
"'<[\/\!]*p[^<>]*?>'si",//过滤P标记
"'<[\/\!]*o:p[^<>]*?>'si",//过滤o:p标记
"'<[\?\!]*xml:[^<>]*?>'si",//过滤xml:标记
"'<[\/\!]*select[^<>]*?>'si",//过滤select标记
"'<[\/\!]*option[^<>]*?>'si",//过滤option标记
"'<[\/\!]*v:[^<>]*?>'si",//过滤v:标记
"'<[\/\!]*o:[^<>]*?>'si",//过滤o:标记
"'id=([^\s>]*)|class=([^\s>]*)|name=([^\s>]*)|align=([^\s>]*)|cellpadding=([^\s>]*)|cellspacing=([^\s>]*)|border=([^\s>]*)|bordercolor=([^\s>]*)|background=([^\s>]*)|bgcolor=([^\s>]*)'si",
"'&#(\d+);'e");
$replace = array ("",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"chr(\\1)");
$show_content=preg_replace($search,$replace,$show_content);
$show_content=preg_replace("/style=['\"]*([^'\"]*)['\"]*/is","",$show_content);//感谢帮助
$show_content=str_replace("\r\n","",$show_content); //去除HTML中的换行符
保存文件即可,这样PHP168采集到的文章就会自动过滤掉iframe,文字颜色等任何你不想要的代码。
这个代码会把<p>标签都过滤掉,如果我们要用它来实现换行,在编写php168采集规则的时候注意把<p>都替换成<br />。
即在过滤框中输入<p>|<br />