dedeCMS采集规则过滤和替换文章内容部分的代码函数

1,711次阅读
没有评论

1. 采集去除链接

{dede:trim}]*)>([^<]*){/dede:trim}
dedecms 去掉带超连接关键字
全部去
{dede:trim}^<a*’>*</a>${/dede:trim}

让 field:title 标题突破 30 这个长度,修改代码的方法
找到./include/inc_arcpart_view.php
行 291 :
if($titlelen==””) $titlelen = 30;
修改为
if($titlelen==””) $titlelen = 60;
就可以了,然后,你可以这样调用了
{dede:channelArtlist typeid=’0′ col=1 tablewidth=’100%’}
{dede:arclist row=”10″}
[field:title function=”cn_substr(’@me’,38)” /]

{/dede:arclist}
{/dede:channelArtlist}

把这个延伸一下: 关于 inc_arcpart_view.php
function GetArcList($typeid=0,$row=10,$col=1,$titlelen=30,$infolen=160,
$imgwidth=120,$imgheight=90,$listtype=”all”,$orderby=”default”,$keyword=””,
$innertext=””,$tablewidth=”100″,$arcid=0,$idlist=””)
这里的参数都可以更改你实际需要的模板元素尺寸大小.

2. 采集过虑中去掉链接保留文字的方法!

柏老大的方法是{dede:trim}<a ([^>]*)>([^<]*)</a>{/dede:trim}
这样做会去掉 <a hf…….> 与 </a> 之间的字符! 这样整个文章就少了部分字符, 不完整了!

后来我多次测试, 总算找到了正确的使用方法! 如下:
{dede:trim}<a([^>]*)>{/dede:trim}
{dede:trim}</a>{/dede:trim}

做成两条采集规则就可以了!
在实际使用中好像 ([^<]*)([^>]*) 两条一起使用才行!

3. 过滤 div
{dede:trim}]*)>{/dede:trim}
{dede:trim}
{/dede:trim}
过滤 js
{dede:trim}]*)>([^<]*){/dede:trim}

过滤未知变量字符
固定 (.*) 固定

4.dede 万能过滤代码

常用正则表达式:

([^]]*) 所有
d 数字
[0-9] 0- 9 之间的数字
[A-Za-z] 字母
[a-z] 小写字母
[A-Z] 大写字母
(.*).(rar|zip|7zip|tgz) 压缩包文件
(.*).(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga) 图片文件
d{6} 邮编
(13|15)[0-9]{9} 手机号码
w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9] E-mail 地址
http[s]?://([w-]+.)+[w-]+([w-./?%&=]*)? URL 地址

以下是常用的正则表达式标签
{dede:trim}<tbody(.*)>{/dede:trim}
{dede:trim}</tbody>{/dede:trim}
{dede:trim}<table(.*)>{/dede:trim}
{dede:trim}</table>{/dede:trim}
{dede:trim}<tr(.*)>{/dede:trim}
{dede:trim}</tr>{/dede:trim}
{dede:trim}<td(.*)>{/dede:trim}
{dede:trim}</td>{/dede:trim}
{dede:trim}<font(.*)>{/dede:trim}
{dede:trim}</font>{/dede:trim}
{dede:trim}<a(.*)>{/dede:trim}
{dede:trim}</a>{/dede:trim}
{dede:trim}<param(.*)>{/dede:trim}
{dede:trim}<embed(.*)</embed>{/dede:trim}
{dede:trim}<object(.*)</object>{/dede:trim}
{dede:trim}<iframe(.*)</iframe>{/dede:trim}
{dede:trim}<form(.*)</form>{/dede:trim}
{dede:trim}<input(.*)>{/dede:trim}
{dede:trim}<script(.*)</script>{/dede:trim}
{dede:trim}<style(.*)</style>{/dede:trim}
{dede:trim}<!?(.*)?>{/dede:trim}

以下为不常用的正则表达式标签

{dede:trim}<div(.*)>{/dede:trim}
{dede:trim}</div>{/dede:trim}
{dede:trim}<center(.*)>{/dede:trim}
{dede:trim}</center>{/dede:trim}
{dede:trim}<p(.*)>{/dede:trim}
{dede:trim}</p>{/dede:trim}
{dede:trim}<span(.*)>{dede:trim}
{dede:trim}</span>{dede:trim}
{dede:trim}<img(.*)>{/dede:trim}

5. 织梦标题不全, 鼠标指向显示全部的代码:
{dede:arclist titlelen=’100′}

[field:title function=’( strlen(“@me”)>40 ? cn_substr(“@me”,40): “@me” )’/]
{/dede:arclist}

6.dede/inc/inc_archives_functions.php 第 100 行(flash 频道远程 flash 本地化的 BUG)
$cfg_uploaddir = $GLOBALS[’media_dir’];
修改成
$cfg_uploaddir = $GLOBALS[’cfg_other_medias’];

6. 发布时间,来源,作者可以通过 @me 函数实现,如:在自定义处理接口:处输入    @me =“Azure?【博】”就表示来源为“Azure?【博】”
7. 内容的替换:在所采集的文章内容中有多媒体,使用的是相对路径,采集的时候又不想下载,最好的办法就是将地址替换成媒体的实际地址。可以这样实现,在
文章内容规则部分的自定义处理接口:处输入 @me=str_replace(‘src=”str1′,’src=”str2′,@me);
这样采集出来的文章中的所有的 str1 就被替换成 str2!

比如:采集替换函数
@me=str_replace(‘舒格尔’,’www.shugeer.com’,@me);

再补充一点    过滤规则

{dede:trim replace=””}<a([^>]*)>(.*)</a>{/dede:trim}
{dede:trim replace=””}<script([^>]*)>(.*)</script>{/dede:trim}
{dede:trim replace=””}<!?(.*)?>{/dede:trim}
{dede:trim replace=””}<table([^>]*)>(.*)</table>{/dede:trim}
{dede:trim replace=””}<object([^>]*)>(.*)</object>{/dede:trim}
{dede:trim replace=””}<iframe([^>]*)>(.*)</iframe>{/dede:trim}
{dede:trim replace=””}<strong> 经典论坛交流 </strong>:<br>{/dede:trim}
{dede:trim replace=””}◎进入论坛、版块参加讨论,我还想。{/dede:trim}
{dede:trim replace=””}责任编辑:{/dede:trim}
{dede:trim replace=””}出处:{/dede:trim}
{dede:trim replace=””}本文链接:{/dede:trim}
{dede:trim replace=””}<span([^>]*)>(.*)</span>{/dede:trim}
这些是过滤的规则    下面是替换的规则

比如 要采集的文章里出现网址 www.shugeer.com     如果你想替换成 www.52listen.com   那替换这个网址的规则就是
{dede:trim replace=”www.52listen.com”}www.shugeer.com{/dede:trim}
这只是替换 的方法 替换文字也可以 什么都行    可以替换多个规则  

最后补充一点 采集页面    分页设置    可以选择

全部列出的分页列表      就是 在你选择的这一段代码里 所有的分页面地址全部采集
上下页形式或不完整的分页列表    上下形式的 和不太完整的 列表分页 可以选择这一个项目  

列表的采集 比如说    ]</a> [内容]下一页 </a>   这样写      就是 在这里的这个列表地址会自动采集    当然 内容里 吧 A 连接 给过滤了 就不会出现问题了

正文完
 0
评论(没有评论)
验证码