【问题标题】:How to validiate for a solely alphabetic string with spaces in PHP?如何在 PHP 中验证带有空格的纯字母字符串?
【发布时间】:2012-05-03 03:59:56
【问题描述】:

我知道有函数ctype_alpha,虽然这个函数会在字符串包含空格(空白字符)时返回FALSE

我如何允许字母字符和空格,但没有别的?

【问题讨论】:

  • 检查前用数字替换空格?
  • @DanRedux 仅在字符串事先不包含数字时才有效。
  • 为什么?如果它预先包含数字,它将正确返回 false。如果它后面包含数字,它将正确返回 false。它唯一会做的就是将空格变成坏标记,将它们视为坏标记。
  • @DanRedux 你误读了这个问题。 OP想要接受包含空格的字符串; ctype_alpha 的问题在于它没有。
  • 哦。然后将空格更改为字母'a'? :P

标签: php regex


【解决方案1】:
$is_alpha_space = ctype_alpha(str_replace(' ', '', $input)));

$is_alpha_space = preg_match('/^[a-z\s]*$/i', $input);

【讨论】:

  • 非常感谢。我喜欢第一个。我只是想知道出于学习目的,您怎么知道第一个?因为我什至无法通过文档来判断。
  • 这不是一个功能。它使用str_replace() 删除空格,然后使用ctype_alpha() 检查结果是否按字母顺序排列。
  • 我明白,但是当文档中的 ctype 页面没有指出它时(你可以做到这一点),你怎么知道的,或者是吗?我不知道。
  • @Carpet 你必须考虑你想要完成什么,有时你必须分步完成它。你问自己,“如果ctype_alpha 不允许使用空格,我该怎么办?”答案是您可以在将空格传递给ctype_alpha 之前删除空格,这样您就可以寻找可以做到这一点的东西。如果您查看str_replace 的手动条目的返回值 部分,您会看到它返回一个带有替换值的字符串。所以你可以将str_replace的返回值传递给ctype_alpha
  • 值得浏览一下 PHP 手册。函数名称通常是不言自明的。每个页面的侧边栏中都有该部分的所有功能列表,另请参阅部分中有相关功能的列表。此外,大多数页面都有用户提供的代码和帮助。
【解决方案2】:
if (preg_match("^/[a-zA-Z ]+$/", $input)) {
    // input matches
}

演示:http://ideone.com/jp6Wi
文档:http://php.net/manual/en/function.preg-match.php

【讨论】:

【解决方案3】:

ctype_alpha(preg_replace('/\s/', '', $mystring))

内部表达式返回不带空格的字符串,然后你随意使用ctype_alpha``

【讨论】:

  • 这属于如果你不需要花哨的替换规则,你应该总是使用str_replace而不是preg_replace
【解决方案4】:

删除空格是可行的方法,但请记住,这些天 ctype_alpha 会在空字符串上导致 false !下面我用的方法...

function validateAlpha($valueToValidate, $spaceAllowed = false) {
    if ($spaceAllowed) {
        $valueToValidate = str_replace(' ', '', $valueToValidate);
    }
    if (strlen($valueToValidate) == 0) {
        return true;
    }
    return ctype_alpha($valueToValidate);
}

【讨论】:

    【解决方案5】:

    我会像这样使用简单的正则表达式和 php 函数 preg_match()

    if(preg_match("/^[a-zA-Z ]+$/", $varToCheck)){
      //your code here
    }
    

    这里的重要部分是标识你想要的部分的正则表达式,在我的例子中,我想要一个名称字段的文本,并带有空格,就像这里的大小写一样。[az] 是从 a 到 z 的范围,AZ 是范围从A到Z,末尾的“”代表空格。

    希望这对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-27
      • 1970-01-01
      • 2018-04-07
      • 2013-11-06
      • 2017-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多