Все игры
Запись
Это спам

Нужна помощь с регулярными выражениями для вычленения парных тег

настроение:Задумчивое

Нравится

Вы не можете комментировать, т.к. не авторизованы.


Комментарий удален
Максим Пак      29-04-2011 16:12 (ссылка)
Re: Нужна помощь с регулярными выражениями для вычленения пар
Работа с HTML-тегами: извлечение параметров и текста

Часто в веб-приложениях встречается задача извлечения текста из HTML-страницы. В предыдущем разделе были рассмотрены приемы извлечения параметров из тегов и . Рассмотрим извлечение названия страницы, заключенное между тегами и . Эту задачу выполнит ниже следующий скрипт:

Название страницы

Текст в абзаце

текст без абзаца";
$patern="#<[\s]*title[\s]*>([^<]*)<[\s]*/title[\s]*>#i";
if(preg_match($patern, $text, $matches)) echo $matches[1];
else echo "Ничего не найдено";
?>
В окне веб-браузера это будет выглядеть ТАК.

Точно так же можно извлечь информацию из других тегов, например, текст между тегами

и

можно извлечь при помощи следующего скрипта:

Название страницы

Текст в абзаце

текст без абзаца";
$patern="#<[\s]*p[\s]*>([^<]*)<[\s]*/p[\s]*>#i";
if(preg_match($patern, $text, $matches)) echo $matches[1];
else echo "Ничего не найдено";
?>

В окне веб-браузера это будет выглядеть ТАК.

Замена прямых кавычек на парные

Еще одна распространенная задача — преобразование прямых кавычек (") на парные кавычки ("и"). Эту задачу решает следующий скрипт:



В окне веб-браузера это будет выглядеть ТАК.

Подстановка с использованием собственных тегов форматирования

Часто требуется использование своих собственных тегов, которые могут приобретать довольно сложную форму. Например, пусть в тексте присутствуют теги, имещие следующий синтаксис:

[d]2D5+8[\d]

Данный тег применяется в ряде ролевых интернет-игр. Необходимо извлеч из тега все три числа и получить по ним результат, который вычисляется по следующему алгоритму:

$sum=0;
for($i=0; $i<2; $i++) $sum=$sum+rand(1,5);//случайное число от 1 до 5
$sum=$sum+8;
Данную задачу удобно решать при помощи функции preg_replace_callback().

Пример:



В данном примере используется функция обратного вызова summ_number(), имя которой передается в качестве второго аргумента функции preg_replace_callback(). Функция принимает массив с результатами поиска и осуществляет вычисления, возвращая строку с результатом, который подставляется вместо найденной подстроки.