Для очистки вики-страницы используется следующий код, например, такой:
http://en.wikipedia.org/wiki/Tel_Aviv (вы можете увидеть разметку, нажав «изменить эту страницу»
Я получил это возвращено:
"и уступил своей репутации" Средиземноморского мегаполиса, который никогда не спит ". Редакция Haaretz Это финансовая столица страны и крупный центр исполнительского искусства и бизнеса. Городской район Тель-Авива является вторым по величине на Ближнем Востоке. Экономика города и занимает 42-е место среди мировых городов по индексу мировых городов Foreign Policys 2008. Это также самый дорогой город в регионе и 17-й самый дорогой город в мире. Стоимость жизни в Израиле высокая, с Тель-Авивом это самый дорогой город для проживания. По данным Mercer, консалтинговой фирмы, базирующейся в Нью-Йорке, по состоянию на 2008 год Тель-Авив является самым дорогим городом на Ближнем Востоке и 14-м самым дорогим в мире. В этом отношении Сингапур и Париж, и только впереди Сиднея и Дублина. Для сравнения, Нью-Йорк на 22-м месте. "
Что не правильно, ожидаемый результат должен быть:
Тель-Авив-Яффо (иврит: תֵּל־אָבִיב-יָפוֹ; арабский: تل أبيب, Tall ʼAbīb), обычно называемый Тель-Авивом, является вторым по величине городом в Израиле, с населением в 393 900 человек. Город расположен на израильском средиземноморском побережье, его площадь составляет 51,8 кв. Км. Это самый большой и самый густонаселенный город в столичном регионе Гуш-Дан, где с 2008 года проживает 3,15 миллиона человек. Город управляется муниципалитетом Тель-Авив-Яффо во главе с Роном Хулдаем.
Для этого кода PHP:
function clean_wiki_text($text)
{
// first get rid of UGC HTML tags
$text = strip_tags($text);
// keep convert tag
$text = preg_replace("/\{\{convert\|([^\|]+)\|([^\|]+)\|[^\}]+\}\}/", "$1$2", $text);
// remove large blocks (treat as tags)
$text = preg_replace("/(<![^>]+>)/", '', $text);
$text = preg_replace('/\{\{\s?/', '<', $text);
$text = str_replace('}}', ' />', $text);
$text = str_replace('<! />', '', $text);
// more wiki formatting
$text = preg_replace("/'{2,6}/", '', $text);
$text = preg_replace("/[=\s]+External [lL]inks[\s=]+/", '', $text);
$text = preg_replace("/[=\s]+See [aA]lso[\s=]+/", '', $text);
$text = preg_replace("/[=\s]+References[\s=]+/", '', $text);
$text = preg_replace("/[=\s]+Notes[\s=]+/", '', $text);
$text = preg_replace('/\{\{([^\}]+)\}\}/', '', $text);
// drop page link text
$text = preg_replace('/\[\[([^:\|\]]+)\|([^:\]]+)\]\]/', "$2", $text);
// or keep it with preg_replace('/\[\[([^:\|\]]+)\|([^:\]]+)\]\]/', "$1 ($2)", $text);
$text = preg_replace('/\(\[[^\]]+\]\)/', '', $text);
$text = preg_replace('/\[\[([^:\]]+)\]\]/', "$1", $text);
$text = preg_replace('/\*?\s?\[\[([^\]]+)\]\]/', '', $text);
$text = preg_replace('/\*\s?\[([^\s]+)\s([^\]]+)\]/', "$2", $text);
$text = preg_replace('/\n(\*+\s?)/', '', $text);
$text = preg_replace('/\n{3,}/', "\n\n", $text);
$text = preg_replace('/<ref[^>]?>[^>]+>/', '', $text);
$text = preg_replace('/<cite[^>]?>[^>]+>/', '', $text);
$text = preg_replace('/={2,}/', '', $text);
$text = preg_replace('/{?class="[^"]+"/', "", $text);
$text = preg_replace('/!?\s?width="[^"]+"/', "", $text);
$text = preg_replace('/!?\s?height="[^"]+"/', "", $text);
$text = preg_replace('/!?\s?style="[^"]+"/', "", $text);
$text = preg_replace('/!?\s?rowspan="[^"]+"/', "", $text);
$text = preg_replace('/!?\s?bgcolor="[^"]+"/', "", $text);
$text = trim($text);
$text = preg_replace('/\n\n/', "<br />\n<br />\n", $text);
$text = preg_replace('/\r\n\r\n/', "<br />\r\n<br />\r\n", $text);
/*
$config = array(
'show-body-only' => true,
'clean' => false,
'wrap' => 0,
'show-warnings' => 0,
'show-errors' => 0,
'enclose-block-text' => false,
'vertical-space' => true,
'output-html' => true
);
// Tidy
$tidy = new tidy;
$tidy->parseString($text, $config, 'utf8');
$tidy->cleanRepair();
$text = $tidy->value;
*/
$extras = array(
// "/\((.*?)\)/is" => "",
"/\[(.*?)\]/is" => ""
);
$text = preg_replace(array_keys($extras), array_values($extras), $text);
$text = str_replace(" ,", ',', $text);
$text = str_replace(", ", ',', $text);
$text = str_replace(",", ', ', $text);
$text = str_replace("(, ", '(', $text);
$text = str_replace(";,", ',', $text);
// lets keep it plain plain plain
$text = strip_tags($text);
// $text = preg_replace('/\s\s+/', ' ', $text);
$text = str_replace("|-", '', $text);
$text = str_replace("|}", '', $text);
$text = str_replace("|", '', $text);
$text = str_replace('()', '', $text);
$text = str_replace(' ', ' ', $text);
$text = trim($text);
$text_arr = preg_split('/[\r\n]+/', $text, -1, PREG_SPLIT_NO_EMPTY);
$result = "";
foreach ($text_arr as $paragraph) {
if ( mb_strlen(trim($paragraph)) > 30 ) {
$result[] = $paragraph;
}
}
return $result;
}