Из примера на php.net PHP: if (preg_match('/жаркое|птица|/u','gbr56u')) echo "Correct"; else echo "Uncorrect"; Всегда дает Correct при любом значении строки. Почему так?
чтобы пустая строка подходила.Так на php.net рекомендуют: совпадениями должны быть жаркое птица пустая строка
Хорошо бы понять, что в вашем случае считать "пустой строкой" и действительно ли вам она нужна. Если в строке должны быть только слова "жаркое", "птица" или "ничего" (даже пробела), то можно использовать такой вариант: PHP: <?php preg_match('/^\z|жаркое|птица$/u', $str); echo preg_match('/^\z|жаркое|птица$/u',''); // 1 echo preg_match('/^\z|жаркое|птица$/u',' '); // 0 echo preg_match('/^\z|жаркое|птица$/u','жаркое'); // 1 echo preg_match('/^\z|жаркое|птица$/u','птица-синица'); // 0