The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Регулярное выражение: Как посчитать \s не попадающие в теги ..."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [Проследить за развитием треда]

"Регулярное выражение: Как посчитать \s не попадающие в теги ..."  
Сообщение от антигерой email(ok) on 14-Июл-07, 18:16 
Надо посчитать пробелы и группы пробелов, не попадающих в теги, проще говоря всё вот такое:
> те пробелы, что здесь в тексте, a не в тегах <

Составил такое выражение:
preg_match_all( "/(?<=\>)([\s]{1,})(?=\<)/", $row->text, $arraymatch5, PREG_OFFSET_CAPTURE);

И оно работает, но почему-то не так какта работает. Тоесть на текст в 50К примерно - получается около 100 пробелов, что не может быть.
Где косяк ? (про ДНК я сам знаю 8-)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Регулярное выражение: Как посчитать \s не попадающие в теги ..."  
Сообщение от A on 16-Июл-07, 09:20 
>Надо посчитать пробелы и группы пробелов, не попадающих в теги, проще говоря
>всё вот такое:
>> те пробелы, что здесь в тексте, a не в тегах <
>
>Составил такое выражение:
>preg_match_all( "/(?<=\>)([\s]{1,})(?=\<)/", $row->text, $arraymatch5, PREG_OFFSET_CAPTURE);
>
>И оно работает, но почему-то не так какта работает. Тоесть на текст
>в 50К примерно - получается около 100 пробелов, что не может
>быть.
>Где косяк ? (про ДНК я сам знаю 8-)

Не совтую решать такие проблемы регулярными выражениями. Рано или поздно вы налетите на теги типа <img alt=">" src=""> и прочую гадость. Строго говоря, грамматика тегов не является регулярной впринципе (она является контекстно-свободной) и потому регулярными выражениями не обрабатывается. Любое решение на основе регулярных выражений будет чуть лучше или чуть хуже, но никак не идеальным. По-правильному, надо парсить HTML-документ чем-нибудь.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Регулярное выражение: Как посчитать \s не попадающие в теги ..."  
Сообщение от .org on 23-Июл-07, 12:18 
>[оверквотинг удален]
>>
>>Составил такое выражение:
>>preg_match_all( "/(?<=\>)([\s]{1,})(?=\<)/", $row->text, $arraymatch5, PREG_OFFSET_CAPTURE);
>>
>>И оно работает, но почему-то не так какта работает. Тоесть на текст
>>в 50К примерно - получается около 100 пробелов, что не может
>>быть.
>>Где косяк ? (про ДНК я сам знаю 8-)
>
>Не совтую решать такие проблемы регулярными выражениями. Рано или поздно вы налетите на теги типа <img alt=">" src=""> и прочую гадость. Строго говоря, грамматика тегов не является регулярной впринципе (она является контекстно-свободной) и потому регулярными выражениями не обрабатывается. Любое решение на основе регулярных выражений будет чуть лучше или чуть хуже, но никак не идеальным. По-правильному, надо парсить HTML-документ чем-нибудь.

Это почему же? С тегами регулярки справляются на ура, вопрос в другом, нужно ли использовать мощь регулярных выражений, для таких целей, ведь они работают на порядок медленней по сравнению с простыми строковыми функциями...


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Регулярное выражение: Как посчитать \s не попадающие в теги ..."  
Сообщение от anonymous (??) on 24-Июл-07, 03:40 
>Это почему же? С тегами регулярки справляются на ура, вопрос в другом,
>нужно ли использовать мощь регулярных выражений, для таких целей, ведь они
>работают на порядок медленней по сравнению с простыми строковыми функциями...

Попробую перефразировать предыдущий ответ, который вам дали.  Сама грамматика html "сложнее", чем можно обработать регулярными выражениями.  Да, вы можете написать выражение, которое обработает 95% ситуаций, но когда-то вам таки встретится файл, который содержит странную конструкцию, и ваши скрипты будут выдавать не просто странные, а очень странные результаты, хоть бы до уязвимостей не дошло.

Тем более, вспомните, насколько свободно браузеры относятся к парсингу html: иногда ну ооочень невалидные документы всё же рендерятся, и хуже того, такие документы попадаются на реальных сайтах.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру