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>';
}
相关文章