preg_match返回false

Sur*_*rma 0 php regex

我正在用PHP编写一个网页,它将提供一些与Minecraft服务器相关的有用工具和信息.我正在研究一个"状态指示器",一个检测服务器是否有问题的系统.该系统的一个部分是使用shell_exec来检查系统上是否有运行的服务器应用程序.我正在使用preg_match来检查shell_exec的结果是否表明正在运行服务器应用程序.问题在于,无论我做什么,preg_match似乎总是返回false,这表示发生了错误.我找不到关于这个错误究竟是什么的任何细节.

function get_server_app_status($appName)
{
    if (preg_match($appName, shell_exec('ps aux | grep ' . $appName . ' | grep -v grep')) != 0)
    {
        return true;
    }
    else 
    {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经验证了shell_exec通过将其推送到变量并使用调试器检查它的值以及检查$ appName来返回我想要的内容.两者都是字符串,并具有我想要的值.我还检查了preg_match以相同的方式返回什么,它确实返回false,而不仅仅是零.

JRL*_*JRL 6

在您的代码段中:

 if (preg_match($appName, shell_exec(...
Run Code Online (Sandbox Code Playgroud)

$appName一个有效的正则表达式?

你可能意味着:

if (preg_match("/" . preg_quote($appName) . "/", shell_exec(...
Run Code Online (Sandbox Code Playgroud)

但是,如果$appName仅仅是一个字符串,那么你会更好只使用一个字符串比较函数不是一个正则表达式,像strcmp或者strpos甚至==.