为了账号安全,请及时绑定邮箱和手机立即绑定

PHP阻止URL和域,但允许电子邮件地址

PHP阻止URL和域,但允许电子邮件地址

PHP
呼如林 2021-04-01 14:15:41
我有一种方法可以用来清除用户提交的数据中的输出。我可以传递选项以分别允许或禁止URL和电子邮件。过去直到现在,当我在不允许的URL和允许的电子邮件中使用它时,它的运行情况都很好。问题是我用来阻止URL的正则表达式也阻止了电子邮件地址上的域。如何阻止URL和域,但前提是它们不属于电子邮件地址?我现有的代码;// email address removalif ( ! ISSET($options['email']) || $options['email'] === FALSE) {    $pattern = "/[^@\s]*@[^@\s]*\.[^@\s]*/";    $replacement = '<span class="muted">*</span>';    $string = preg_replace($pattern, $replacement, $string);}// url - link removalif ( ! ISSET($options['url']) || $options['url'] === FALSE) {    $pattern = "/[a-zA-Z]*[:\/\/]*[A-Za-z0-9\-_]+\.+[A-Za-z0-9\.\/%&=\?\-_]+/i";    $replacement = '<span class="muted">**</span>';    $string = preg_replace($pattern, $replacement, $string);}
查看完整描述

2 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

您可以做的是使用否定环视断言来验证左侧(?<!\S)和右侧的(?!\S)内容不是非空格字符。

您的模式的稍微更新的版本可能是:

(?<!\S)[a-zA-Z]*[:/]*[\w-]+\.+[\w:./%&=?-]+(?!\S)

正则表达式演示

请注意,您不必如果使用其他逃跑的斜杠分隔符不是/~,连字符-可以被移动到开始或字符类的不逃脱它的结束及该点.没有在转义角色类。


查看完整回答
反对 回复 2021-04-23
  • 2 回答
  • 0 关注
  • 196 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信