Возможно ли получение текста не привязываясь регулярками?

Тема в разделе "PHP", создана пользователем асс, 21 ноя 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221
    Есть вопрос?
    Мне надо вынуть текст
    к примеру по условию.
    условие такое, в тексте есть N% текста, к примеру 10-50 слов теги тоже учитываем ,только те что указаны
    (или же если в тексте например без учета тегов есть

    из печатных букв [А-я]и [A-z]
    В тексте есть теги <p></p><br></br>
     
  2. Liver

    Liver

    Регистр.:
    24 сен 2008
    Сообщения:
    316
    Симпатии:
    91
    Конечно можно. Просто разбить на слова/предложения/буквы и идит в цикле проверяя все и выдирая нужное.
     
  3. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221
    А можно примерчик
    простенький
    нарпимер выдрать из текста


    </a></li></ul></div><ins class="bl"></ins><ins class="br"></ins></div></div><div id="content" class="w-clear"><h2 class="main"><a href="/incidents/">Происшествия</a></h2><h1><strong>Взрыв произошел на телевизионном ретрансляторе на севере Испании</strong></h1><div id="article" class="w-clear_tmp"><img class="main" src="http://img.beta.rian.ru/images/15357/44/153574444.jpg" width="360" height="203" alt="Испанская полиция" title="Испанская полиция" /><div class="copy f-s-sm"><a href="http://img.motorpasion.com">*img.motorpasion.com</a></div><div class="dt blue"><span class="time nbr dblue">15:02 </span>21/11/2008</div><div class="body"><p><strong></strong></p>
    <p><strong>МАДРИД, 21 ноя - РИА Новости, Елена Висенс.</strong> Взрыв произошел в ночь с четверга на пятницу на телевизионном ретрансляторе в Бильбао, сообщило испанское информационное агентство EFE со ссылкой на источники в Ertzaintza (баскская полиция).</p>
    <p>На месте работают агенты полиции. Пока известно только, что взрыв был большой мощности, поскольку был слышен далеко за пределами места происшествия и нанес существенный материальный ущерб.</p></div></div><div id="actions" class="centered w-clear" onclick="switchActions(event);"><div class="c"><ul>
     
  4. HatoL

    HatoL

    Регистр.:
    5 фев 2008
    Сообщения:
    206
    Симпатии:
    36
    делай лучше регулярками. Большого увеличения скорости обработки ты не получишь, зато получишь до ужаса нечитабельный код.

    Напиши по-русски то, что хочешь. Я два раза перечитал, не понял
     
  5. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221
    Нужно выдрать текст,
    который может иметь в своем коде,мусор ссылки теги,таблицы и так далее.
    Выдрать нужно не просто все подряд. а только если условие положительное.

    Ниже я показал кусок текста с мусором.
    Выдираем текст только если предложение имеет
    больше 2х 3 слов

    вот пример http://corpauto.ru/
    пройдите по ссылке под новостью и посмотрите код новости у источника.

    Возможно ли получить тот же текст что указан
    на сайте (ссылка под хайдом)
    не используя привязку регулярками к тегам кода?
    Выбрать по другому?
     
  6. Liver

    Liver

    Регистр.:
    24 сен 2008
    Сообщения:
    316
    Симпатии:
    91
    По ссылке сайта нет. всего лишь дефолтовая страница.

    Вы вопрос неправильно ставите. Конечно возможно. Парсить можно множеством способов, например
    1) регулярками
    2) вычищать текст разными функциями языка и остаток забирать
    3) просто разбить на части допустим предложения, а потом собирать воедино проверяя условия.
    4) парсер на конечных автоматах. Удобен для парсинга различных выражений (проверка закрытой скобки, тэга и прочее). Небось те же регулярные выражения через конечные автоматы разбираются.
    5) Паттерн интерпретатор. Это когда разбирается на синтаксическое дерево. Классический пример - DOM в html
    ...

    Вид разбора зависит от условия. А условия до сих пор нормального не озвучено.
     
  7. antidote

    antidote

    Регистр.:
    21 янв 2008
    Сообщения:
    167
    Симпатии:
    42
    ну немного нелогично выходит. Есть у тебя таблица ддопустим. Ты strip_tags() убрал все теги. В результате из целой таблицы у тебя вышло одно (!) предложение. Если такй вариант устраивает то все ок. Чисти текст от тегов, разбей текст по точкам, получишь предложения. Далее substr_count() считаешь количество пробелов. если более двух то по логике в предложении не менее 3х слов
     
  8. General Fizz

    General Fizz Боевой Генерал :)

    Регистр.:
    11 апр 2007
    Сообщения:
    753
    Симпатии:
    396
    В функции strip_tags или fgetss можно указывать параметр, какие теги не следует удалять и эти теги задавать условием. Иначе регулярки.
     
  9. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221

    Я допустим могу вынуть текст нужный между тегов

    к примеру регулярками. Но нужно составить скорее всего паттерн. Ведь если сменить щаблон то регулярка не сможет взять текст.
    Или же надо писать универсальную регулярку.

    Здесь важно чтоб текст был оригинальным.
    Ну не изменен до неузнаваемости.
     
  10. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    Код:
    $text= trim(preg_replace('|[\s]+|s',' ',strip_tags($content)));
    
    Более-менее очистит от тегов и не надо бояться регулярок...
     
Статус темы:
Закрыта.