我试图把一个插件,vBulletin过滤掉链接文件共享网站。 但是,正如我敢肯定,你经常听到,我到PHP更别说正则表达式对于新手。
基本上,我试图把一个正则表达式,并使用了preg_replace地发现,从这些领域的任何URL和替换,他们是不允许的消息整个链路。 我希望它发现无论是超链接,发布为纯文本,或包含在[CODE] BB标签的链接。
至于正则表达式,我需要它来寻找与以下网址,我认为:
- 与HTTP或锚标签开始。 我相信,在[CODE]该网址的代码可以处理一样的纯文本网址,并更换了[code]标签内之后结束了它的罚款。
- 可以包含域/字之前的任何数量的任何字符
- 一个地方有域在中间
- 可以包含域之后的任何数量的任何字符
- (| HTM | RAR |拉链| 001 HTML)或在闭合锚标记与一些一些推广的诸如结束。
我有一种感觉,它的号码2和4被绊倒了我(如果不是更多)。 我发现这里类似的问题,并试图挑开的码位(尽管我并没有真正理解它)。 我现在有这个,我想可能会奏效,但它并不:
<?php
$filterthese = array('domain1', 'domain2', 'domain3');
$replacement = 'LINKS HAVE BEEN FILTERED MESSAGE';
$regex = array('!^http+([a-z0-9-]+\.)*$filterthese+([a-z0-9-]+\.)*(html|htm|rar|zip|001)$!',
'!^<a+([a-z0-9-]+\.)*$filterthese+([a-z0-9-]+\.)*</a>$!');
$this->post['message'] = preg_replace($regex, $replacement, $this->post['message']);
?>
我有一种感觉,我的路要走基地在这里,我承认我不完全了解PHP更不用说正则表达式。 我愿意就如何做到这一点更好的任何建议,如何做到这使它工作,或链接RTM(虽然我读了一下,我会继续)。
谢谢。