парсю гугл, не получаетс яподобрать регулярку для выбора предложений в сайтах.
на данный момент
[php:1:c6739cb71a]
preg_match_all('/\r*\n*\.*\s*[A-Z0-9А-Я]*[a-zа-яА-ЯA-Z\s\,0-9]+\.*\!*\?*[\n\s\r]+/siU', $content, $out);
echo '<pre>';
print_r($out);
echo '</pre>';
$arr[]= implode("\r\n", $out[0]);
echo '<pre>';
print_r($arr);
echo '</pre>';[/php:1:c6739cb71a]
Может кто сталкивался?
Та я в курсе, просто много чего перепробовал, но лабуда. Кто нить сталкивался? Регулярка должна быть универсальной, для всех сайтов.
24 Мар 2013, 20:19Ну сначала пробел или перевод строки или точка или !? начало предложения Большая буква или цифра, слова с пробелами, и в конце опять .!? и возможно перевод строки или пробел как-то так.
24 Мар 2013, 20:45для начало нужно очистить страницу от html-тегов
[php:1:88ff5bfe3f]<?php
$data = file_get_contents('../testdata.html');
$data = preg_replace('~^.+\<body[^>]*\>(.+)\<\/body\>.+$~sui', '$1', $data);
$data = preg_replace('~\<[^>]+\>~s', '', $data);
$data = str_replace("\r", '', $data);
$data = trim(preg_replace("~([\n\t ]){2,}~s", "$1", $data));
?>[/php:1:88ff5bfe3f]
а потом каким-то образом разбить получившийся текст на кусочки. Здесь нужно самостоятельно подбирать регулярку, чтобы лишнее не вырезала. Возникает вопрос, как отделять предложения? По точке, вопросительному и восклицательному знаку?
[php:1:88ff5bfe3f]<?php
var_dump(preg_split('~[?!.\n]+~', $data));
?>[/php:1:88ff5bfe3f]
Текущую страницу данный код разобьёт на: [смотри файл parser.txt]
Как видишь, придётся придумывать фильтры для вставок кода, элементов управления страницы и для всякой мелочи типа &npsp; вместо пробелов. Поэтому-то написать универсальный парсер не получится. Для примера, на xwab'e нужно парсить только сообщения - блоки row_easy/row_hard внутри catSides и убирать служебную информацию.
P.S: парсер порвало от последней вставки тегом php, выложил в виде файла. Также он не может нормально обработать [php], если внутри нет "<?php" и "?>".
DJ_WINROL,какой сайт..для примера.
добавлено спустя 3 минуты:
DJ_WINROL,получить чистый текст..