За последние 24 часа нас посетили 18997 программистов и 1618 роботов. Сейчас ищет 961 программист ...

Поиск по нескольким словам в preg_match

Тема в разделе "PHP для новичков", создана пользователем allowance, 12 янв 2011.

  1. allowance

    allowance Активный пользователь

    С нами с:
    19 янв 2010
    Сообщения:
    196
    Симпатии:
    0
    Не ищет по второму слову -
    preg_match("/(.jpg)|(.gif)$/", $photo, $ext);

    Как правильно составить регулярное выражение чтобы искало по нескольким ключевым словам?
     
  2. Dima4321

    Dima4321 Активный пользователь

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    Код (Text):
    1. preg_match("/(.jpg)|(.gif)$/", $photo, $ext);
    $ здесь конец строки т.е. у тебя совпадет .gif в том случае если конец строки заканчивается на .gif

    тебе нужно так

    Код (Text):
    1. preg_match_all("/(.jpg)|(.gif)/", $photo, $ext);
    а скорей всего вот так

    Код (Text):
    1. preg_match_all("/([^\s.]+\.jpg)|([^\s.]+\.gif)/", $photo, $ext);
     
  3. allowance

    allowance Активный пользователь

    С нами с:
    19 янв 2010
    Сообщения:
    196
    Симпатии:
    0
    Первый вариант работает так же как и мой(второе значение не найдено), второй вариант работает так же только берёт всё что после точки , второе значение тоже не ищет.

    P.S. Почему preg_match_all а не preg_match? Тут либо .jpg либо .gif нужно получить.
     
  4. Dima4321

    Dima4321 Активный пользователь

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    скинь кусок кода и что нужно получить !
     
  5. Dima4321

    Dima4321 Активный пользователь

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
  6. Dima4321

    Dima4321 Активный пользователь

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    PHP:
    1. <?php
    2. ini_set('display_errors',1);
    3.  
    4.  $photo = "http://www.test.ru/photo.gif";
    5.  preg_match("/(?:\.jpg)|(?:\.gif)/", $photo, $get_ext);
    6.  
    7.  foreach ($get_ext as $value)
    8.  
    9.  {
    10.  echo $value;
    11.  
    12.  }
    13.  
    14.  
    15.  ?>
     
  7. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    А может там, например giF написано? Или GIF...
    Попробуй добавить в конце регулярки i
    Код (Text):
    1. preg_match("/(.jpg)|(.gif)$/i", $photo, $ext);