【问题标题】:PHP - First and last character checkPHP - 第一个和最后一个字符检查
【发布时间】:2016-08-02 15:44:10
【问题描述】:

我正在尝试检查 PHP。我要检查的是:

  • 字符串的第一个字符必须是“[”
  • 字符串中的最后一个字符必须是“]”

我已经编写了这段代码(最后一个 if 语句是我真正想要的)来检查这一点,但没有得到我想要的结果:

$str = "dfgdfg]";

if($str[0] != '[') {
    echo "FIRST NOT EQUAL TO";
}

if(substr($str,-1) != ']') {
    echo "SECOND NOT EQUAL TO";
}


if( ($str[0] != '[') && (substr($str,-1) != ']') ) {
  echo "COND MET!";
}

如果我运行这段代码,我认为最后一个 if 语句会执行,但是,只有第一个 if 语句会执行。最后一个if语句的逻辑有什么问题?

【问题讨论】:

  • 根据您的 $string 没有 [ 所以它会回显所写的内容。第二个 id false 因为它包含 ] 所以那里没有回声。并且由于 && 最后一个条件如果它只满足第一个条件

标签: php if-statement logic


【解决方案1】:

您将最后一条语句设置为“AND - &&”并且应该是“OR - ||”

if( ($str[0] != '[') || (substr($str,-1) != ']') ) {
echo "COND MET!";
}

【讨论】:

    【解决方案2】:

    您最后的if 语句正在检查字符串的第一个字符是否NOT[,最后一个字符也是NOT] .如果您从$str 中删除最后一个],您将看到COND MET 输出。

    if( ($str[0] != '[') && (substr($str,-1) != ']') ) {
      echo "COND MET!";
    }
    

    如果您希望检查以确保字符串分别以[] 开头和结尾,您需要这样:

    if( ($str[0] == '[') && (substr($str,-1) == ']') ) {
      echo "COND MET!";
    }
    

    【讨论】:

      【解决方案3】:

      简单的 RegExr 检查怎么样:

      if (preg_match('/^\[.*\]$/', $str) {}
      

      【讨论】:

        猜你喜欢
        • 2013-11-26
        • 2012-06-18
        • 2012-08-16
        • 1970-01-01
        • 1970-01-01
        • 2014-07-13
        • 2023-03-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多