PHP REGEX:忽略+和# [英] PHP REGEX: Ignore + and #

查看:18
本文介绍了PHP REGEX:忽略+和#的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面是我正在做的事情:

我有一个表单,其右侧有一个标题,我只想以A-Z、0-9和空格的形式写入,而对于标题,我想执行相反的操作,这样,如果用户编写了错误的内容,我可以显示问题出在哪里for example: "Invalid Charachter"

但是我被+#困住了,我想用正则表达式从表单中忽略它们,这样我也可以为它们显示"Invalid character"消息,因为我看到php认为+符号等于空格()或其他什么,但我也需要忽略+和#符号。这是我当前的代码:

preg_match_all("/[^ws]/",$string,$matches);


foreach($matches[0] as $ic){
     if(strpos($str,$ic) || $str[0] == $ic){
          $fullname_error = "Invalid Character";
     }  
}

有效字符串:

  • 无名氏
  • Mary Sue

无效字符串:

  • J#ohn Doe
  • 无名氏
  • John+Doe
  • Mar@y+Sue
  • !Mary Sue
  • Mary Sue!

推荐答案

您可以这样处理无效字符:

$str = 'gum@#+boo';
if (preg_match_all('/[^ws]/u', $str, $matches)) {
    echo sprintf(
        '<p>Your input <b>%s</b> contains %d invalid character%s: <b>%s</b>.</p>',
        htmlspecialchars($str),
        count($matches[0]),
        count($matches[0]) > 1 ? '' : 's',
        implode('</b>, <b>', array_map('htmlspecialchars', array_unique($matches[0])))
    );
    echo '<p>Please choose a different input value.</p>';
}

这篇关于PHP REGEX:忽略+和#的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆