...

понедельник, 18 ноября 2013 г.

Поиск различных вариантов транслитерации русских текстов (ФИО) латиницей для выборок в MySQL


print_r (r2e ("Очень простая фраза на русском языке"));

function r2e ($txt)
{
$r=array(mb_strtolower($txt,"windows-1251"));
$r=r2es($r,"/кс/i",array("x","ks","cs"));
$r=r2es($r,"/ей/i",array("ey","ei"));
$r=r2es($r,"/ов/i",array("ov","off"));
$r=r2es($r,"/а/i",array("a"));
$r=r2es($r,"/б/i",array("b"));
$r=r2es($r,"/в/i",array("v","w"));
$r=r2es($r,"/г/i",array("g"));
$r=r2es($r,"/д/i",array("d"));
$r=r2es($r,"/е/i",array("e"));
$r=r2es($r,"/ё/i",array("yo","jo"));
$r=r2es($r,"/ж/i",array("zh","z"));
$r=r2es($r,"/з/i",array("z","s"));
$r=r2es($r,"/и/i",array("i"));
$r=r2es($r,"/й/i",array("j","y"));
$r=r2es($r,"/к/i",array("k","c"));
$r=r2es($r,"/л/i",array("l"));
$r=r2es($r,"/м/i",array("m"));
$r=r2es($r,"/н/i",array("n"));
$r=r2es($r,"/о/i",array("o"));
$r=r2es($r,"/п/i",array("p"));
$r=r2es($r,"/р/i",array("r"));
$r=r2es($r,"/с/i",array("s"));
$r=r2es($r,"/т/i",array("t"));
$r=r2es($r,"/у/i",array("u"));
$r=r2es($r,"/ф/i",array("f"));
$r=r2es($r,"/х/i",array("h","kh"));
$r=r2es($r,"/ц/i",array("c","ts"));
$r=r2es($r,"/ч/i",array("ch"));
$r=r2es($r,"/ш/i",array("sh"));
$r=r2es($r,"/щ/i",array("shch","sch","sh"));
$r=r2es($r,"/ъ/i",array(""));
$r=r2es($r,"/ы/i",array("y"));
$r=r2es($r,"/ь/i",array(""));
$r=r2es($r,"/э/i",array("e"));
$r=r2es($r,"/ю/i",array("u","yu","ju"));
$r=r2es($r,"/я/i",array("ya","ja"));
return $r;
}

function r2es ($var, $pattern, $splits)
{
$sp=array(); $nsp=array();
foreach ($var as $v)
if (preg_match($pattern,$v)) foreach ($splits as $split) $sp=array_merge($sp,array(preg_replace($pattern,$split,$v)));
else $nsp=array_merge($nsp,array($v));
return array_merge($sp,$nsp);
}




This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers.


Комментариев нет:

Отправить комментарий