Не ищет по второму слову - preg_match("/(.jpg)|(.gif)$/", $photo, $ext); Как правильно составить регулярное выражение чтобы искало по нескольким ключевым словам?
Код (Text): preg_match("/(.jpg)|(.gif)$/", $photo, $ext); $ здесь конец строки т.е. у тебя совпадет .gif в том случае если конец строки заканчивается на .gif тебе нужно так Код (Text): preg_match_all("/(.jpg)|(.gif)/", $photo, $ext); а скорей всего вот так Код (Text): preg_match_all("/([^\s.]+\.jpg)|([^\s.]+\.gif)/", $photo, $ext);
Первый вариант работает так же как и мой(второе значение не найдено), второй вариант работает так же только берёт всё что после точки , второе значение тоже не ищет. P.S. Почему preg_match_all а не preg_match? Тут либо .jpg либо .gif нужно получить.
PHP: <?php ini_set('display_errors',1); error_reporting(E_ALL); $photo = "http://www.test.ru/photo.gif"; preg_match("/\.jpg|\.gif/", $photo, $get_ext); print_r($get_ext); ?>
PHP: <?php ini_set('display_errors',1); error_reporting(E_ALL); $photo = "http://www.test.ru/photo.gif"; preg_match("/(?:\.jpg)|(?:\.gif)/", $photo, $get_ext); foreach ($get_ext as $value) { echo $value; } ?>
А может там, например giF написано? Или GIF... Попробуй добавить в конце регулярки i Код (Text): preg_match("/(.jpg)|(.gif)$/i", $photo, $ext);