PHP正则表达式:忽略+和#
问题描述:
因此,这里是我做的究竟是什么:PHP正则表达式:忽略+和#
我有在它右侧的标题的形式,我想在窗体上只写AZ,0〜 9和空格,并为标题我想反其道而行之,因此如果用户写的东西错了,我可以表明什么问题for example: "Invalid Charachter"
但我坚持了+
和#
我想忽略他们也从正则表达式的形式,所以我可以显示这些"Invalid character"
消息,因为我看到PHP认为+ sign是= space()或什么,但我需要忽略+和#号。这是我当前的代码:
preg_match_all("/[^\w\s]/",$string,$matches);
foreach($matches[0] as $ic){
if(strpos($str,$ic) || $str[0] == $ic){
$fullname_error = "Invalid Character";
}
}
有效的字符串:
- 李四
- 玛丽苏
不适字符串:
- J#翁多伊
- 约翰&李四
- 约翰·多伊+
- 月@ Y +苏
- !玛丽苏
- 玛丽苏!
答
你可以做这样的事情来处理无效字符:
$str = '[email protected]#+boo';
if (preg_match_all('/[^\w\s]/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>';
}
答
试试这个:
<?
function checkString($str)
{
echo "Testing ".$str."<br />";
// Check if there are invalid characters
if (!preg_match("/^[a-zA-Z0-9\s]+$/", $str))
{
echo "Oh no! There are invalid characters! :(<br />";
}
else
{
echo "There is no invalid character!!! :)<br />";
}
// What are the invalid characters?
if (preg_match("/[^(a-zA-Z0-9\s)]/", $str, $matches))
{
echo "Invalid character: ".$matches[0]."<br />";
}
}
checkString("This is a good string");
checkString("This is a not a good string$%#@#$");
?>
你是哪里人“套牢+和#”,你的意思办通过“忽略他们”?你想删除它们吗?删除一切,但他们?还有什么你无视?我不确定你在问什么。 – 2010-07-04 10:08:07
只看到我目前的代码,但我编辑帖子,以添加更多的意义,我的问题。 – Adam 2010-07-04 10:11:50
您当前的代码匹配所有非单词非空格字符。我不确定你忽略了什么。如果您让我们知道您的*目标*,那将会有所帮助。 – 2010-07-04 10:13:13