【问题标题】:How to find if string contains letters and spaces (php)?如何查找字符串是否包含字母和空格(php)?
【发布时间】:2010-05-02 22:49:32
【问题描述】:

因此,如果字符串不仅包含所有欧洲和东方字母的字母以及“”(空格)和“-”减号,我需要获取值 false 或 true。如何用一些 $a 字符串做这样的事情?

【问题讨论】:

  • 您认为“所有欧洲和东方字母的字母”是什么?
  • 我猜是拉丁字母和西里尔字母。

标签: php regex string validation


【解决方案1】:

试试这个:

if (preg_match('/^[\p{L&} -]+$/u', $a)) {
  # Only letters (any script), spaces and hyphens
} else {
  # Emtpy string or other characters too
}

\p{L} 匹配可以成为任何脚本中单词一部分的任何字符,包括表意文字(例如汉字)。 \p{L&} 仅匹配来自字母脚本(拉丁文、希腊文、西里尔文、泰文等)的字母

【讨论】:

    【解决方案2】:

    以下是regular-expressions.info 对 Unicode 和 PHP 的看法:

    Regular expressions on PHP

    最重要的正则表达式函数集以preg 开头。这些函数是 PCRE 库(Perl 兼容的正则表达式)的 PHP 包装器。 本网站正则表达式教程中有关 PCRE 正则表达式风格的任何内容都适用于 PHP 的 preg 函数。对于所有使用正则表达式的新 PHP 代码,您应该使用 preg 函数。

    一个特殊的选项是/u,它打开Unicode 匹配模式,而不是默认的8 位匹配模式。您应该为使用\x{FFFF}\X\p{L} 匹配Unicode 字符、字素、属性或脚本 的正则表达式指定/u。 PHP 会将'/regex/u' 解释为 UTF-8 字符串而不是 ASCII 字符串。


    Unicode support

    Unicode 标准将每个分配的代码点(字符)放入一个脚本。脚本是特定人类书写系统使用的一组代码点。一些像泰语这样的脚本对应于一种人类语言。拉丁文等其他脚本跨越多种语言。

    现在很少有正则表达式引擎支持 Unicode 脚本。在本教程中讨论的所有风格中,只有 JGsoft 引擎、Perl 和 PCRE 可以匹配 Unicode 脚本。以下是所有 Unicode 脚本的完整列表:

    • \p{Cyrillic}
    • [...省略其余部分]

    因此,如果您想查看一个字符串是否由 PHP 中的 Cyrillic 字母组成,您可以尝试将其与以下正则表达式进行匹配:

    /^\p{Cyrillic}*$/u
    

    【讨论】:

      【解决方案3】:

      听起来您以错误的方式处理字符集问题,但我可能是错的......?过去让我绊倒的一些问题..

      • DOMDocument 在内部以 UTF8 处理所有内容,无论如何。
      • 包含在不同的字符集中
      • 由于缺少“SET NAMES..”指令,数据库未以 Unicode 格式输出。

      代码应该实现什么?如果我们可以将您的问题转至下一步,也许会有更好的解决方案。

      【讨论】:

        【解决方案4】:

        预赛是一种简单的方法。您只需要添加以下条件。

        如果 $name 只包含字母和空格,则返回 true,否则返回 false。

        if (preg_match("/^[a-zA-Z\s]+$/", $name)) {
          return true;
        } else {
          return false;
        }
        

        希望对你有帮助!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-06-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-12-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多