Можно организовать bb-код [wiki=Текст] или использовать в других целях.
<?php
header('Content-Type: text/html;charset=utf-8');
echo wiki_search("H2O", null); // Отображаем данные по запросу
function wiki_search($str, $lang) {
$url = "http://".($lang?$lang:"ru").".m.wikipedia.org/wiki/?search=".($str); // Ищем в мобильной вики
$code = file_get_contents($url); // Грузим всю страницу
preg_match("/<p><b>(.{1,})</p>/", $code, $var); // Выбираем нужное
$text = trim(preg_replace("/\[[0-9]\]/s", null, $var[1])); // Удаляем лишние циферки-якоря
$text = strip_tags($text); // Убираем все теги
return html_entity_decode_utf8($text);
}
function html_entity_decode_utf8($string)
{
static $trans_tbl;
// replace numeric entities
$string = preg_replace('~&#x([0-9a-f]+);~ei', 'code2utf(hexdec("\1"))', $string);
$string = preg_replace('~&#([0-9]+);~e', 'code2utf(\1)', $string);
// replace literal entities
if (!isset($trans_tbl))
{
$trans_tbl = array();
foreach (get_html_translation_table(HTML_ENTITIES) as $val=>$key)
$trans_tbl[$key] = utf8_encode($val);
}
return strtr($string, $trans_tbl);
}
function code2utf($num)
{
if ($num < 128) return chr($num);
if ($num < 2048) return chr(($num >> 6) + 192) . chr(($num & 63) + 128);
if ($num < 65536) return chr(($num >> 12) + 224) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128);
if ($num < 2097152) return chr(($num >> 18) + 240) . chr((($num >> 12) & 63) + 128) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128);
return '';
}
?>