Chinaunix

标题: 文章关键字替换的问题 [打印本页]

作者: txiu    时间: 2008-02-01 14:40
标题: 文章关键字替换的问题
请问大家个问题,上传个带HTML代码的文章,我想替换里面一些关键字,而又不导致文章乱,如何实现?举个例子吧:
比如我设置的关键字是:我们
代码是:<p>请我们帮助我们,谢谢大家</p><div><img src="http://www.help.com/logo.jpg" title="我们" alt="我们" /><br />请我们帮助我们</div>
将上面所有页面上显示的文字“我们”替换成<a href="url" target="_blank">我们</a>,但是html标签里面的文字不能被替换,否则页面就乱了,这里图片就显示不出来了!肯定的是用str_replace函数是不行的,用正则表达式如何去写呢?
高手们帮我解答,先谢谢大家了!
作者: carset    时间: 2008-02-01 14:54
正则跟实际环境有很大关系.你最好能列出实际的使用情况.帮你写完后可以基本不加修改的使用.

就你上面的例子来使用可以

preg_replace('/[^"]我们[^"]/','你们',$str)
作者: txiu    时间: 2008-02-01 15:12
关键字是提交文章的时候用户自定义的,文章也是用户使用在线编辑器编辑的,所有都是动态的,我就是想请教个函数,是通用的函数:
//$article是文章内容,$keyword是输入的关键字文字
function keyword_replace($article,$keyword){

}
请问如何完成改函数?
作者: txiu    时间: 2008-02-01 15:15
原帖由 carset 于 2008-2-1 14:54 发表
正则跟实际环境有很大关系.你最好能列出实际的使用情况.帮你写完后可以基本不加修改的使用.

就你上面的例子来使用可以

preg_replace('/[^"]我们[^"]/','你们',$str)


对了,可能有的用户上传的文章的HTML标签里包括关键字但是并没用引号怎么办比如<img src=url alt=关键字 />
作者: carset    时间: 2008-02-01 15:19
正则没有正真意义上通用的.

或者你可以用  alt= 跟 title= 来做限定条件.但没有通用的. alt=  就类似于上面的 引号 .
作者: txiu    时间: 2008-02-01 15:26
这样不好吧,如果alt=后面跟了引号可以,如果没干引号呢?因为我也控制不了用户加不加引号呀,而且如果用户在其他的标签属性里也用了关键字,岂不是要吧所有的标签属性都要放到正则里面呢?
作者: carset    时间: 2008-02-01 15:39
$reg = '/[^(alt=)"?]我们/';

这个里面已经匹配了一个引号,或者没有引号. ? 没有或这一个.但不匹配多个..




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2