ハードコードされたリストのいくつかの値のいずれかに一致する値が変数に含まれているかどうかを確認したいと考えています。以下を使用していましたが、最近、どこかに欠陥があることがわかりました。
if (preg_match("/^(init)|(published)$/",$status)) {
echo 'found';
} else {
echo 'nope';
}
変数 $status に「unpublished」という単語が含まれている場合、「unpublished」という単語がリストに含まれていなくても一致することがわかりました。これは、「unpublished」という単語に「published」という単語が含まれているためと思われますが、^ と正規表現の $ は、単語全体の一致を強制することになっています。私が間違っていることはありますか?