Привет всем. Не могу сообразить забрал я вот в перменную страницу загруженную, теперь мне надо определить есть ли на ней блоки текстов более чем состоящие из набора слов (подряд) => чем N слов в конфиге. Регепсы блин плохо знаю дп и понимаю может подскажет кто? По дивам ловить не как не получиться текст может быть и в <p> скажем ... и может быть вообще без тегов в таблице скажем. Я предпологаю что логика должна быть следюущая: Берем массив полностью с кодом html для чистоты данных брать нужно от <body.* далее смотрим где подряд идут слова, те без вкраплений тегов, исключением будут допустим теги <b><br><и надо подумать еще какие> находим такие блоки текста и считаем в них слова, если свло больше чем N то значит открываем цикл на обработку дальнейшую
вначале удаляются все "лишние теги": PHP: <?php $text = <<<EOT <div id="abcd">here <b>should</b> <p>be some</p> text</div> EOT; # <b><i><br><span> $text = preg_replace('#</?(?:b|i|br|span)[^>]*>#sUi', '', $text); echo htmlspecialchars($text); ?> а вот дальше можно смотреть по ситуации - то ли парсить через DOM XML, то ли дальше регулярками. Только нужно иметь в виду, что поиск регулярками не ищет вложенные запросы. Например, что делать со следующим текстом? <div> bla-bla-bla <div> internal bla </div> bla-bla-bla </div> при попытке найти то, что заключено между открывающим и закрывающим тегами div, будет найдена следующие строки (при нежадных квантификаторах): 1. <div> bla-bla-bla <div> intenal bla </div> 2. <div> intenal bla </div>
ну в теории надо теги раскидать те кторые могут встерчаться в блоках, див думаю как раз в большинстве случаев не сможет встречаться в текста хотя все зависит от длинны самого текста в новом диве внутри длинного текста, ну какое то выделение и тд... задача не тривиальная
именно, именно! слишком много неизвестных данных. Скорее всего надо будет бегать по ДОМ-дереву в поисках нужного узла. к лишним тегам также можно отнести <a>,<img>,<table>,<tr>,<input>,<textarea>,<select>,<form>... регулярка просто удаляет эти теги из текста, сам текст остаётся.