Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > Помогите обработать html регулярным выражением.


Автор: XMLDriver 12.8.2010, 06:52
Здравствуйте.
Возникла проблема. Есть html код, причем вообще разные. Т.е. берем страницу с любого сайта. 
Мне нужно обработать все слова какой-то функцией, которые встречаются на сайте и в которых алфавитные символы. Но, не задеть при этом ничего другого. 
Я так понимаю, что с помощью регулярного выражения, мы находим текст между тегами, т.е. от символа > до символа < , делим его по пробелам, и обрабатываем каждое слово. Обработка то, ерунда, а вот как выдернуть текст, обработать и вставить назад?
Например: 
Код

<? 
// Функция обработки текста

function replace_text($str)
{ $str = '1'.$str.'1';}

// Обработка html
while(выражение определяющее наличие необработанного текста)
{
// поиск текста между тегами
// обработка его
// вставка назад
}
?>


в общем я не знаю, как это реализовать. Помогите пожалуйста, очень прошу.

Автор: Wolf1994 12.8.2010, 07:33
Вопрос можно решить с помощью регулярного выражения для алфавитных символов и функции: http://ru2.php.net/manual/en/function.preg-replace-callback.php.

Автор: Wolf1994 12.8.2010, 07:49
Захватить символы снаружи тэгов можно с помощью: http://ru2.php.net/manual/en/regexp.reference.assertions.php.

Автор: XMLDriver 12.8.2010, 12:03
Цитата(Wolf1994 @ 12.8.2010,  07:49)
Захватить символы снаружи тэгов можно с помощью: http://ru2.php.net/manual/en/regexp.reference.assertions.php.

Читаю , но пока мало понимаю, как эта штука работает, не приведете пример?

Автор: XMLDriver 12.8.2010, 12:38
Сходил по ссылке, почитал, насколько вообще смог понять...правда мало, что понял. Можно в двух словах и небольшой пример? Хотя бы, что за концепция у этой штуки? Куда рыть?

Автор: XMLDriver 12.8.2010, 13:00
Почитал, но мало, что понял Assertations. 
Какая концепция работы этой штуки? В какую сторону рыть и где можно поискать примеры? Помогите, плс.

Автор: XMLDriver 12.8.2010, 13:28
Одной ссылки на технологию на английском языке и совет по использованию функции недостаточно. Я и так знал, что функцию использовать, вопрос в регулярке и конструкции.

Автор: Wolf1994 12.8.2010, 13:59
Цитата(XMLDriver @  12.8.2010,  12:03 Найти цитируемый пост)
Читаю , но пока мало понимаю, как эта штука работает, не приведете пример? 

Утверждения устанавливают условия, при которых работает, заключённое в них, регулярное выражение.

В данном случае, с помощью утверждений, можно добавить в условие захвата [a-zа-я ]+ наличие символов >< в начале и конце текста:
Код

/(?<=[\>]{1})[a-zа-я ]+(?=[\<]{1})/si

Автор: krundetz 12.8.2010, 15:32
XMLDriver, может стоит взглянуть в сторону библиотек работы с DOM-структурой?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)