помогите составить регулярное выражение

Тема в разделе "PHP", создана пользователем LifeInventor, 24 авг 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. LifeInventor

    LifeInventor Писатель

    Регистр.:
    5 мар 2008
    Сообщения:
    9
    Симпатии:
    0
    Имеется текст текст с тегами, надо вытащить то что между тегами <div class="class1"> и <br>
    Между ними тоже могут быть теги <strong>, <em>
    Помогите плиз.
     
  2. Dador

    Dador Читатель

    Заблокирован
    Регистр.:
    14 янв 2008
    Сообщения:
    368
    Симпатии:
    97
    PHP:
    $start '<div class="class1">';
      
    $end "<br>";
      
    preg_match_all('|'.$start.'(.*?)'.$end.'|is'$match[1], $match); 
    $gotovo =  $match[1][3];
    echo 
    $gotovo;
    Если чтобы было толькостронг и ем, то
    PHP:
    $start '<div class="class1">';
      
    $end "<br>";
      
    preg_match_all('|'.$start.'(.*?)'.$end.'|is'$match[1], $match); 
    $gotovo strip_tags($match[1][3], '<strong><em>');
      echo 
    $gotovo;
    регулярка
    PHP:
    '|'.$start.'(.*?)'.$end.'|is'
    $start - от куда, $end - до куда
     
    LifeInventor нравится это.
  3. LifeInventor

    LifeInventor Писатель

    Регистр.:
    5 мар 2008
    Сообщения:
    9
    Симпатии:
    0
    Спасибо.
    Поясните только пару моментов если можно.
    1) | в начале и |is в конце регулярного выражения. Это альтернативное обозначение начала и конца?
    2) .*? -- что это означает?
     
  4. Dador

    Dador Читатель

    Заблокирован
    Регистр.:
    14 янв 2008
    Сообщения:
    368
    Симпатии:
    97
    1. не знаю, 2. не знаю
    регулярное делал давно и для себя, где-то год назад....
    1 - наверное да
    2 - вроде любой символ или что-то такое, ой т.е символы
     
  5. admLoki

    admLoki генератор случайного PHP

    Регистр.:
    14 сен 2006
    Сообщения:
    481
    Симпатии:
    93
    || - ограничители паттерна. is - модификаторы, i - регистро-независимая выборка, s - включения в выборку символа перевода строк.

    .*? - означает выборку всех символов. * - квантификатор, означающий ноль или более вхождений, ? - квантификатор жадности, точка - любой символ.
    Кстати, не советую использовать | как ограничитель. Символ | используется в регулярках для разделения альтернативных масок.
     
    LifeInventor нравится это.
  6. LifeInventor

    LifeInventor Писатель

    Регистр.:
    5 мар 2008
    Сообщения:
    9
    Симпатии:
    0
    А в чем отличие от .* ? (без квантификатора жадности)
    Я так делал, работало совершенно не правильно.
     
  7. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    PHP:
    .*
    Означает Максимальное допустимое количество символов .( в данном случаи любых).
    PHP:
    .*?
    Означает Минимальное допустимое количество любых символов.
    Хотя можно инвертировать жадность флагом PCRE_UNGREEDY, хотя для меня это изврат.
     
  8. Смоленский

    Смоленский

    Регистр.:
    2 июл 2008
    Сообщения:
    248
    Симпатии:
    87
    Люди поделитесь опытом, у кого есть регулярное выражение для фильтрации a-zа-я0-1 и ,.!- Нужно фильтровать текст чтобы были только буквы, знаки препинания, пробелы и ,.!-
     
  9. Alternator

    Alternator

    Регистр.:
    23 мар 2009
    Сообщения:
    295
    Симпатии:
    145
    PHP:
    <?php
    $subject
    ="фыввыфsadsa1234-.,";
    if(
    preg_match("/^[\w\dа-яА-Я,\.!-]*$/",$subject)){
    echo 
    "строка содержит только небходимые символы<br>";
    }
    $subject="фыввыф$%^#@sadsa1234-.,";
    $subject=preg_replace("/[^\w\dа-яА-Я,\.!-]+/","",$subject);
    echo 
    $subject;//из строки були удалены лишние символы

    ?>
     
  10. Смоленский

    Смоленский

    Регистр.:
    2 июл 2008
    Сообщения:
    248
    Симпатии:
    87
    Пишу в поле: Дядя, Вася! Рядом. где-то
    не прокатывает "/^[\w\dа-яА-Я,\.!-]*$/"
    PHP:
    $name htmlspecialchars($_POST['name']);
            
    // проверяем текст
            
    if (!preg_match("/^[\w\dа-яА-Я,\.!-]*$/"$name)) {
                echo 
    "Борода: ".$name."<br />";
                } else {
                echo 
    "Каширно: ".$name."<br />";
                }
     
Статус темы:
Закрыта.