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

Статус
В этой теме нельзя размещать новые ответы.

LifeInventor

Писатель
Регистрация
5 Мар 2008
Сообщения
9
Реакции
0
Имеется текст текст с тегами, надо вытащить то что между тегами <div class="class1"> и <br>
Между ними тоже могут быть теги <strong>, <em>
Помогите плиз.
 
  • Заблокирован
  • #2
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 - до куда
 
Спасибо.
Поясните только пару моментов если можно.
1) | в начале и |is в конце регулярного выражения. Это альтернативное обозначение начала и конца?
2) .*? -- что это означает?
 
  • Заблокирован
  • #4
Спасибо.
Поясните только пару моментов если можно.
1) | в начале и |is в конце регулярного выражения. Это альтернативное обозначение начала и конца?
2) .*? -- что это означает?

1. не знаю, 2. не знаю
регулярное делал давно и для себя, где-то год назад....
1 - наверное да
2 - вроде любой символ или что-то такое, ой т.е символы
 
Спасибо.
Поясните только пару моментов если можно.
1) | в начале и |is в конце регулярного выражения. Это альтернативное обозначение начала и конца?
2) .*? -- что это означает?
|| - ограничители паттерна. is - модификаторы, i - регистро-независимая выборка, s - включения в выборку символа перевода строк.

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

.*? - означает выборку всех символов. * - квантификатор, означающий ноль или более вхождений, ? - квантификатор жадности, точка - любой символ.
Кстати, не советую использовать | как ограничитель. Символ | используется в регулярках для разделения альтернативных масок.
А в чем отличие от .* ? (без квантификатора жадности)
Я так делал, работало совершенно не правильно.
 
PHP:
.*
Означает Максимальное допустимое количество символов .( в данном случаи любых).
PHP:
.*?
Означает Минимальное допустимое количество любых символов.
Хотя можно инвертировать жадность флагом PCRE_UNGREEDY, хотя для меня это изврат.
 
Люди поделитесь опытом, у кого есть регулярное выражение для фильтрации a-zа-я0-1 и ,.!- Нужно фильтровать текст чтобы были только буквы, знаки препинания, пробелы и ,.!-
 
PHP:
<?php
$subject="фыввыфsadsa1234-.,";
if(preg_match("/^[\w\dа-яА-Я,\.!-]*$/",$subject)){
echo "строка содержит только небходимые символы<br>";
}
$subject="фыввыф$%^#@sadsa1234-.,";
$subject=preg_replace("/[^\w\dа-яА-Я,\.!-]+/","",$subject);
echo $subject;//из строки були удалены лишние символы

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