php - 使用 PHP 的 preg_match 来查看某个值是否与值列表匹配

标签 php

我想查看变量是否包含与硬编码列表中的几个值之一匹配的值。我正在使用以下内容,但最近发现它在某处有缺陷:

if (preg_match("/^(init)|(published)$/",$status)) {
    echo 'found';
} else {
    echo 'nope';
}

我发现如果变量 $status 包含单词“unpublished”,即使“unpublished”不在列表中,仍然存在匹配项,据说是因为单词“unpublished”包含单词“published”,但我认为正则表达式中的 ^ 和 $ 应该强制匹配整个单词。有什么想法我做错了吗?

最佳答案

修改您的模式:

$pattern = "/^(init|published)$/";
$contain = "unpublished";

echo preg_match($pattern, $contain) ? 'found' : 'nope' ;

此模式表示我们的字符串必须是 /^init$//^published$/,表示从开始到结束的那些特定字符串。因此在这些约束下子字符串无法匹配。

关于php - 使用 PHP 的 preg_match 来查看某个值是否与值列表匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13707583/

相关文章:

php - 告诉 Composer 使用不同的 PHP 版本

java - 单独的 HTTP 连接结果(PHP echo)

php - 重复 mysql 获取导致 php 资源使用率较高

PHP Foreach , 在哪里

javascript - JQuery Ajax Json 响应不起作用

php - 从 $wpdb 获取正确的值

javascript - 使用 jQuery AJAX 的 HTML 表单

php - 如何使用 PHP 创建 CSV 文件(并上传)

php - Jquery Ajax 将 tinyMCE html 发送到 php 页面

php - 在 PHP 中插入语句失败