【问题标题】:Determine if variable has ANY text确定变量是否有任何文本
【发布时间】:2010-11-23 04:57:06
【问题描述】:

我想确定一个变量是否有任何文本。
例如,我当前的代码是这样的:

if (is_numeric ($id)) 
{
  //do stuff
} 
else 
{
  // do other stuff 
}

但是,如果我的变量同时包含字符串和数字,则会出现问题
比如“你93岁”,
因为它看到数字 93 存在并考虑变量 numeric。
如果变量中完全没有文本,我希望 if 语句只“做一些事情”。

谢谢

【问题讨论】:

  • 函数如何为该字符串返回真值?您是否尝试过运行该值的代码,是否检查了正确的变量等?您可能需要运行更多测试。
  • 对不起,我不明白你的意思。我确定这是正确的变量。另外,你的意思是它如何返回true?
  • 他问“它如何返回 true”的原因是函数 is_numeric() 将返回 true 如果整个字符串包含数字或小数...即:您的 is_numeric('you are 93 years old') 示例将始终返回false。即使是逗号 (,) 也会导致 is_numeric 返回 false。

标签: php variables string-comparison


【解决方案1】:

尝试将值转换为 int(或 float),然后将其与未更改的版本进行比较。它们应该匹配值(但不是类型)

if((int)$id == $id) {
} else {
}

另一种选择是使用preg_match("/^([\d.\-]+)$/", $id)。这将允许您非常具体地了解您让 $id 包含哪些字符。然而,使用 regexp 应该被视为最终选择(出于性能原因)

【讨论】:

    【解决方案2】:
    if(empty($var) && $var !== "0" && $var !== 0) {
        // it's really empty, not a string "0" and not a numeric 0
    }
    

    为了完整起见,您还可以检查它是否不是布尔值 false

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 2016-05-17
      • 2012-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多