Как использовать «если X или X» в выражении preg_match - PullRequest
5 голосов
/ 24 января 2011

Я хочу сделать заявление в PHP следующим образом:

if(preg_match("/apples/", $ref1, $matches)) OR if(preg_match("/oranges/", $ref1, $matches)) { Then do something }

Все вышеперечисленное само по себе работает просто отлично, но я не могу понять, каксделайте так, чтобы, если какой-либо из них был истинным, чтобы выполнить функцию, которую я имею под этим.

Ответы [ 3 ]

18 голосов
/ 24 января 2011

Используйте |, чтобы выбрать одно или другое значение.Вы можете использовать его несколько раз.

preg_match("/(apples|oranges|bananas)/", $ref1, $matches)

РЕДАКТИРОВАТЬ: Этот пост сделал меня голодным.

10 голосов
/ 24 января 2011

Чтобы сгруппировать ваши шаблоны и зафиксировать результат в $matches:

preg_match('/(apples|oranges)/', $ref1, $matches)

Чтобы сгруппировать ваши шаблоны без захвата результата в $matches (наиболее актуально, если вы делаете захват других скобок и не хотите, чтобы это мешало):

preg_match('/(?:apples|oranges)/', $ref1, $matches)
4 голосов
/ 24 января 2011

Простой, используйте логический оператор ИЛИ:

if (expression || expression) { code }

Например, в вашем случае:

if(
    preg_match("/qualifier 1/", $ref1, $matches) ||
    preg_match("/qualifier 2/", $ref1, $matches)
) {
    do_something();
}
...