我需要使下面的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';
}