За последние 24 часа нас посетил 16941 программист и 1291 робот. Сейчас ищут 1458 программистов ...

Регулярное выражение

Тема в разделе "Регулярные выражения", создана пользователем Shatalinalex, 16 авг 2006.

  1. Shatalinalex

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

    С нами с:
    7 мар 2006
    Сообщения:
    92
    Симпатии:
    0
    Адрес:
    Нижний Новгород
    Пытаюсь поймать текст между <item></item>

    пишу такую регулярку


    $patterns="/(<item>)(.)(<\/item>)/U";
    preg_match_all($patterns,$what,$res);
    print_r($res);

    Выводит пустой массив!
     
  2. Vitas

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

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    $patterns="/(<item>)(.*)(<\/item>)/U";
     
  3. Shatalinalex

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

    С нами с:
    7 мар 2006
    Сообщения:
    92
    Симпатии:
    0
    Адрес:
    Нижний Новгород
  4. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    PHP:
    1.  
    2. <?php
    3. $what = '<item>text</item>
    4.     <item>
    5.         text2
    6.     </item>';
    7. $patterns = "#<item>(.*)</item>#Us";
    8. preg_match_all($patterns, $what, $res);
    9. print_r($res);
    10. ?>
    11.  
     
  5. Shatalinalex

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

    С нами с:
    7 мар 2006
    Сообщения:
    92
    Симпатии:
    0
    Адрес:
    Нижний Новгород
    А почему он все два раза повторяет?
    Два раза выводит одно и тоже!?!?!
     
  6. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    PHP:
    1.  
    2. (
    3.     // полное совпадение с шаблоном
    4.     [0] => Array
    5.         (
    6.             [0] => <item>text</item>
    7.             [1] => <item>
    8.         text2
    9.     </item>
    10.         )
    11.     // совпадения в скобках
    12.     [1] => Array
    13.         (
    14.             [0] => text
    15.             [1] =>
    16.         text2
    17.    
    18.         )
    19.  
    20. )
    21.  
     
  7. Shatalinalex

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

    С нами с:
    7 мар 2006
    Сообщения:
    92
    Симпатии:
    0
    Адрес:
    Нижний Новгород
    Код (Text):
    1. $what = '
    2. <item>
    3. <qqq>sdfg</qqq>
    4. <www>sdfg</www>
    5. </item>
    6. <eee>sdfg</eee>
    7. <aaa>sdfg</aaa>
    8. <item>
    9.  
    10. </item>
    11. ';
    12. $patterns = "#<item>(.*)</item>#Us";  
    13. preg_match_all($patterns, $what, $res);  
    14. print_r($res);
    почему он вырезает теги внутри <item></item>
     
  8. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    это не он вырезает. Это на странице не отображается в браузере - он их воспринимает как неизвестные теги.
    Посмотрите исходный код в браузере и увидете их
     
  9. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    PHP:
    1.  
    2. <?php
    3. $what = '
    4. <item>
    5. <qqq>sdfg</qqq>
    6. <www>sdfg</www>
    7. </item>
    8. <eee>sdfg</eee>
    9. <aaa>sdfg</aaa>
    10. <item>
    11.  
    12. </item>
    13. ';
    14. $patterns = "#<item>(.*)</item>#Us";  
    15. preg_match_all($patterns, $what, $res);
    16. print_r($res);
    17. ?>
    18.  
     
  10. Shatalinalex

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

    С нами с:
    7 мар 2006
    Сообщения:
    92
    Симпатии:
    0
    Адрес:
    Нижний Новгород
    Ок спасиб разобрался!