100分求一正则表达式!另开贴给分...

zhutimy 2005-04-20 04:50:04
求一正则表达式:

目的:只许在[img][/img]里有"webdisallow",在其它地方出显的话,一一将它们改成"XXX";
也就是说,我的网站除了让用户引用某网站的图片以外,不许出显、引用该网站的名称、链接等
如:


[url="http://www.abc.com/abc.htm"]
[url="http://www.webdisallow.com/abc.htm"]
webdisallow.com其它文字webdisallow.net
[url="http://www.webdisallow.net/exchange/apfenpianqi.jpg"]
其它文字...
改成:


[url="http://www.abc.com/abc.htm"]
[url="http://www.XXX.com/abc.htm"]
XXX.com其它文字XXX.net
[url="http://www.XXX.net/exchange/apfenpianqi.jpg"]
其它文字...

大侠们,帮个忙吧,已经施了N久了。问题解决再另开贴给100分!
...全文
153 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhutimy 2005-04-21
  • 打赏
  • 举报
回复
结贴.
请keaizhong(可爱钟),eglic(圪圪),shuangren(土狗早睡早起)到这里领分!谢谢
http://community.csdn.net/Expert/topic/3954/3954008.xml?temp=.393017
zhutimy 2005-04-21
  • 打赏
  • 举报
回复
To: shuangren(土狗早睡早起)
原来我给出的例子里就是有人输入“■”,那些人太怪了!什么都输进去!
不过原理我明白了.
shuangren 2005-04-21
  • 打赏
  • 举报
回复
把“■”换成一串无规律字符,比如我在一个类似的场合中用的是“『〈”和“〉』”,像这样的字符组合是不大可能有人输入的,也就避免了你上面提的“#”有没有人输入问题。当然故意输入那样字符的人除外。
keaizhong 2005-04-21
  • 打赏
  • 举报
回复
原来搞错了,现在没有问题了。
<?php
$s = '

[url="http://www.abc.com/abc.htm"]
[url="http://www.webdisallow.com/abc.htm"]
webdisallow.com其它文字webdisallow.net
[url="http://www.webdisallow.net/exchange/apfenpianqi.jpg"]
其它文字...
';
$s = str_replace("webdisallow", "XXX", $s);
//echo $s;
$s = preg_replace("/(\[img\].*)XXX(.*\[\/img\])/isU", "\\1webdisallow\\2", $s);
echo($s);
?>
lingdou 2005-04-20
  • 打赏
  • 举报
回复
路过
zhutimy 2005-04-20
  • 打赏
  • 举报
回复
不知道人家在[img][/img]之间会不会打入#进去
zhutimy 2005-04-20
  • 打赏
  • 举报
回复
能不用正则表达式那是最好啦,效率应该会更好的
是是非非 2005-04-20
  • 打赏
  • 举报
回复
这个问题单纯用正则反而更加麻烦

正则不是万能的,否则那么多字符串函数都可以去掉了
是是非非 2005-04-20
  • 打赏
  • 举报
回复
不用正则是最好的

1、先把所有的webdisallow替换成#########
2、用正则把[img]和[/img]中间的########替换成webdisallow
3、把所有的#########替换成XXX

/\[img\].+([\#]{9}).+\[\/img\]/i
shuangren 2005-04-20
  • 打赏
  • 举报
回复
做不出来,很费脑筋,请高手吧 -_-

PHP不会,俺点错了才到这个版的。但是正则表达式的格式我想都一样,不需要变很多吧?
公亮 2005-04-20
  • 打赏
  • 举报
回复
顶上去
为了分
为了提问别人
zhutimy 2005-04-20
  • 打赏
  • 举报
回复
up
创造奇迹9999 2005-04-20
  • 打赏
  • 举报
回复
关注!
zhutimy 2005-04-20
  • 打赏
  • 举报
回复
谢谢 shuangren(土狗早睡早起)!
可是这是要在写入数据库之前做的事情,所以最好能给我PHP的,谢谢!
shuangren 2005-04-20
  • 打赏
  • 举报
回复
这是一个变通的容易理解容易处理的方法
<script>
str = '[url="http://www.abc.com/abc.htm"][url="http://www.webdisallow.com/abc.htm"]webdisallow.com其它文字webdisallow.net[url="http://www.webdisallow.net/exchange/apfenpianqi.jpg"]其它文字...'
str1 = str
str = str.replace(/(\[img\][^\[]*)webdisallow([^\[]*[\[\/img\]])/gi,"$1■$2")
str = str.replace(/webdisallow/gi,"xxx")
str = str.replace(/■/gi,"webdisallow")
alert(str1+"\n\n"+str)
</script>

直接的再让我想想
zhutimy 2005-04-20
  • 打赏
  • 举报
回复
UP
zhutimy 2005-04-20
  • 打赏
  • 举报
回复
不能掉,再顶!
shuangren 2005-04-20
  • 打赏
  • 举报
回复
有挑战性,我试试
zhutimy 2005-04-20
  • 打赏
  • 举报
回复
顶上去先
zhutimy 2005-04-20
  • 打赏
  • 举报
回复
好像还差点.
得到结果是:
[url="http://www.abc.com/abc.htm"] [url="http://www.XXX.com/abc.htm"] XXX.com其它文字XXX.net [url="http://www.XXX.net/exchange/apfenpianqi.jpg"] 其它文字...
少了第一个[/img]了,再等
加载更多回复(2)

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧