За последние 24 часа нас посетил 16961 программист и 1279 роботов. Сейчас ищут 1429 программистов ...

Регулярка для `<![CDATA`, что не так?

Тема в разделе "Регулярные выражения", создана пользователем DZEN, 26 май 2008.

  1. DZEN

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

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    Не могу разобраться почему пустые массивы возвращаются.

    PHP:
    1.  
    2. <?php
    3. $str = '<pubDate><![CDATA[Mon, 26 May 2008 12:00:00 +0000]]></pubDate>';
    4. preg_match_all('/<pubDate>([^<?]+)<\/pubDate>/', $str, $matches);
    5. print_r($matches);
    6. ?>
    7.  
    Если дело в CDATA, тогда объясните пожайлуста как выцепить `26 May 2008 12:00:00 +0000` когда он внутри `<pubDate>`.
     
  2. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Самое простое решение:
    Код (Text):
    1. /<pubDate>(?:<!\[CDATA\[)?(.*?)(?:\]\]>)?<\/pubDate>/
     
  3. DZEN

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

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    А как мне выцепить `<![CDATA[Mon, 26 May 2008 12:00:00 +0000]]>` :) ?
     
  4. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Код (Text):
    1. /<pubDate>(.*?)<\/pubDate>/
     
  5. DZEN

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

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    Спасибо.
    Теперь по новому шаблону не работает поиск другого элемента :). Сам разберусь :? .