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