За последние 24 часа нас посетили 15514 программистов и 1610 роботов. Сейчас ищут 870 программистов ...

Регулярка

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

  1. allowance

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

    С нами с:
    19 янв 2010
    Сообщения:
    196
    Симпатии:
    0
    PHP:
    1. <?
    2. preg_match('~<ul>(.*?)</ul>~s', $out, $text2);  
    3. ?>
    4.  
    подцепляет то что между <ul>...текст...</ul>
    Как можно сделать чтобы подцеплялось не только при таком условии <ul>...текст...</ul>
    но и при таком <ul class="какой-то класс">...текст...</ul> ?
     
  2. Shumomer

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

    С нами с:
    12 мар 2011
    Сообщения:
    194
    Симпатии:
    1
    Адрес:
    из вашего вображения
    preg_match('~<ul([^>]*?)>(.*?)</ul>~s', $out, $text2);
     
  3. allowance

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

    С нами с:
    19 янв 2010
    Сообщения:
    196
    Симпатии:
    0
    Shumomer
    <ul>...текст...</ul> - этот вариант не захватывает.
     
  4. Shumomer

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

    С нами с:
    12 мар 2011
    Сообщения:
    194
    Симпатии:
    1
    Адрес:
    из вашего вображения
    Вы-б попробовали прежде чем говорить:

    Код (Text):
    1. <?php
    2. $out='blabla <ul>text</ul>blabla';
    3. preg_match('~<ul([^>]*?)>(.*?)</ul>~s', $out, $text2);
    4. print_r($text2);
    5. ?>
    Код (Text):
    1. Array
    2. (
    3.     [0] => <ul>text</ul>
    4.     [1] =>
    5.     [2] => text
    6. )
    Обратите внимание на выделенный символ: preg_match('~<ul([^>]*?)>(.*?)</ul>~s', $out, $text2);
     
  5. allowance

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

    С нами с:
    19 янв 2010
    Сообщения:
    196
    Симпатии:
    0
    Shumomer

    HTML:
    1. <ul>
    2.     <li>
    3.         text/li>
    4.     <li>
    5.         text2</li>
    6. </ul>
    А такое у вас захватывает?
     
  6. <?=RPG?>

    <?=RPG?> Активный пользователь

    С нами с:
    19 ноя 2010
    Сообщения:
    451
    Симпатии:
    0
    Вообще-то должно, вам правильно подсказали.
     
  7. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    можно и так '~<ul[^>]*>(.*)</ul>~sUi'
     
  8. Shumomer

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

    С нами с:
    12 мар 2011
    Сообщения:
    194
    Симпатии:
    1
    Адрес:
    из вашего вображения
    Можно. Честно говоря уже не помню почему я пришел к правилу писать всегда ([^>]*?). То-ли в каких-то хитрых вариантах иначе не работало то-ли что.. Сейчас уже на автомате так пишу.
     
  9. allowance

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

    С нами с:
    19 янв 2010
    Сообщения:
    196
    Симпатии:
    0
    Спасибо всем!
    '~<ul[^>]*>(.*)</ul>~sUi' - этот вариант работает.