【问题标题】:Check if string is just white space? [duplicate]检查字符串是否只是空格? [复制]
【发布时间】:2010-06-07 19:06:13
【问题描述】:

可能重复:
If string only contains spaces?

我不想更改字符串,也不想检查它是否包含空格。我想检查整个字符串是否是 ONLY 空格。最好的方法是什么?

【问题讨论】:

  • @Dan McG 我一定很擅长搜索,因为我发誓在发布之前我已经搜索过了。
  • 问题可能重复,但答案不是。
  • @Justin Johnson:所以,如果有人想出更好的方法来做到这一点,它不应该被添加或支持吗?
  • Rep 仅在已删除的问题上消失。顺便说一句,作为精确重复定位的问题询问检测空格,而不是空格。所以这个问题不是 exact 重复的。
  • 另外,这个问题和另一个问题都没有考虑到 Unicode 空格(preg_match('/^[\pZ\pC]$/u',$str))的答案。关闭确实很蹩脚,因为它看起来可能是重复的,而实际上只是一个模糊的类比。

标签: php


【解决方案1】:

这将是最快的方式:

$str = '      ';
if (ctype_space($str)) {

}

在空字符串上返回 false,因为空是 不是 空格。如果您需要包含一个空字符串,您可以添加|| $str == '' 这仍然会导致比正则表达式或修剪更快的执行。

ctype_space

【讨论】:

  • 哇,我没想到它会比修剪简单得多,但我想它可以。为我从未见过或使用过的功能 +1。
  • 签出:php.net/manual/en/book.ctype.php 检查字母数字字符 ctype_alpha — 检查字母字符 ctype_cntrl — 检查控制字符 ctype_digit — 检查数字字符 ctype_graph —检查除空格之外的任何可打印字符 ctype_lower — 检查小写字符 ctype_print — 检查可打印字符 ctype_punct — 检查任何不是空格或字母数字字符的可打印字符 ctype_space — 检查空格字符( s) ctype_upper — 检查大写字母...
  • “这仍然会导致比正则表达式或修剪更快的执行。” ideone.com/t8ou8D
  • ctype_space(" ") === false
  • 如果需要空检查,使用if (ctype_space($str . ' '))
【解决方案2】:

因为 trim 返回一个去掉了空格的字符串,所以用它来检查

if (trim($str) == '')
{
 //string is only whitespace
}

【讨论】:

  • 嗯,确实比 preg_* 路线更快..
  • +1 用于非正则表达式解决方案。并不是说正则表达式有什么问题。
  • 请记住,trim 会将您传入的任何内容转换为字符串。即 (trim(false) == '') 将返回 true,这可能超出原始海报的要求(但很可能没问题)
  • 可以做得更快> ideone.com/t8ou8D
【解决方案3】:
if( trim($str) == "" )
    // the string is only whitespace

这应该可以解决问题。

【讨论】:

    【解决方案4】:

    preg_match('/^\s*$/',$string)

    如果不允许为空,则将 * 更改为 +

    【讨论】:

    • \s 是什么意思?非空白?
    • @John,如前所述,空格,也许您将字符类 ^ ([^p] = 任何不是 'p') 与 '^p' 混淆了(= 字符串必须以 p 开头)
    • \s 是“空白”,\S 是“非空白”
    • 我投反对票只是因为您应该仅在需要时避免使用正则表达式。对于这样简单的事情,内置 PHP 函数是要走的路
    • @MANCHUCK:我什至对自己投了反对票,并且 ctype_space 赞成,但这里已经有 cmets 所以我选择不删除它。
    猜你喜欢
    • 2015-08-22
    • 1970-01-01
    • 2015-06-10
    • 2010-12-16
    • 1970-01-01
    • 2021-08-17
    • 2014-08-03
    • 2017-08-19
    相关资源
    最近更新 更多