PHP字符串比较时,字符串结尾可以包含随机数


PHP string comparison when string ending can contain random numbers

我需要使下面的PHP工作。我基本上需要取一个存储在$sshCommandResponseString中的字符串,并检查它是否包含4个可能的字符串中的1个。

start: Job is already running: mysql
mysql start/running, process 8019
mysql stop/waiting mysql start/running, process 8348
stop: Unknown instance: mysql start/running, process 8693

最后3个字符串以4位数字结束,该数字始终是不同的值。所以我不能像下面的函数那样做一个简单的if/else检查,因为字符串有时会以4位数结束!

那么检查字符串是否与这4个字符串中的1个匹配的最佳方法是什么呢?

function didMySqlDbRestart($sshCommandResponseString){
    if( $sshCommandResponseString == 'start: Job is already running: mysql' ){
        return true;
    }else if( $sshCommandResponseString == 'mysql start/running, process 8019' ){
        return true;
    }else if( $sshCommandResponseString == 'mysql stop/waiting mysql start/running, process 8348' ){
        return true;
    }else if( $sshCommandResponseString == 'stop: Unknown instance: mysql start/running, process 8693' ){
        return true;
    }else{
        return false;
    }
}
if(didMySqlDbRestart($sshCommandResponseString)){
    echo 'SUCCESS: MySQL Database Rebooted';
}else{
    echo 'ERROR: MySQL Database Did Not Reboot';
}

加上用户Laser的答案,也许这样就可以了…

  function didMySqlDbRestart($sshCommandResponseString){
    if(preg_match('/^.*'d{4}$/', trim($sshCommandResponseString)) > 0){
        return true;
    }else if($sshCommandResponseString == 'start: Job is already running: mysql'){
        return true;
    }else{
        return false;
    }
  }

使用strpos检查字符串的常量部分或使用preg_match使用正则表达式

进行测试

我想用正则表达式。

<?php
  function didMySqlDbRestart($sshCommandResponseString){
    return preg_match('/process 'd+$/', trim($sshCommandResponseString)) > 0;
  }
 if(didMySqlDbRestart($sshCommandResponseString)){
    echo 'SUCCESS: MySQL Database Rebooted';
    } else{
   echo 'ERROR: MySQL Database Did Not Reboot';
 }