【问题标题】:How to check in php if string contains special characters like { and } [duplicate]如果字符串包含{和}等特殊字符,如何检查php [重复]
【发布时间】:2014-03-13 20:24:36
【问题描述】:

在此输入字段中,我希望该用户无法使用以下特殊标记:{}[]$

现在我的代码中有以下解决方案,但问题是它不允许 ä、ö、ü 或其他类似的字符。

if (preg_match('/^[-a-zA-Z0-9 .]+$/', $string)  || empty($string)){
echo "Everything ok!";
else{ 
echo "Everything not ok!";}

因此,我尝试使用 preg_match('/^[\p{L}\p{N} .-]+$/', $string) 因为据说它允许来自任何语言的字符,但该解决方案除外不允许像@和*这样的标记,我认为这可能是需要的。那么任何允许除 {}[]$ -marks 之外的任何东西的解决方案?非常感谢任何帮助,因为我不知道要写什么才能使它正常工作。

【问题讨论】:

  • 为什么不直接将允许的字符添加到字符类中呢?
  • 更容易定义允许的内容,而不是不允许的内容
  • "除{}[]$ 之外的任何内容" = [^{}[\]$](用^+$ 包围以测试整个输入)。听起来没那么难。
  • @Jon:感谢您指出我以前的解决方案之一中的拼写错误。我今天早些时候尝试过那个,但似乎我完全忘记了 \ -mark。难怪它在第一次尝试时给了我错误。非常感谢,对我的失明感到抱歉。

标签: php string preg-match character


【解决方案1】:

这就是我的做法:

if (preg_match('/[^a-zA-Z\d]/', $string)) {
//$string contains special characters, do something.
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2016-08-24
    • 2011-02-19
    相关资源
    最近更新 更多