Разработка плагинов, модулей и скриптов > Полезный PHP код > Функция определения языка текста

Функция определения языка текста

PHP функция определяет язык написания текста с большой точностью. Может определить русский, украинский и английский языки. Анализирует текст на предмет часто встречающихся комбинаций символов, специфических для конкретного языка. Максимальная точность достигается при обработке длинных статей.

 

Пример использования:

echo simple_detect_language( 'Это русский текст' );

 

/*
Определяет язык написания текста
Автор: http://trickywebs.org.ua/
*/
function simple_detect_language( $text ) {

	$detectLang = array(
		'ukr'=>array( 'і', 'ї', 'є', 'її', 'цьк', 'ськ', 'ія', 'ння', 'ій', 'ися', 'ись' ),
		'rus'=>array( 'ы', 'э', 'ё', 'ъ', 'ее', 'её', 'цк', 'ск', 'ия', 'сс', 'ую', 'ение' ),
		'eng'=>array( ' and ', 'ing', 'ion', ' or ', ' if ', ' in ', ' a ', ' the ', ' in ', ' on ', ' as ' ),
	);

	# Get chars presence index
	$langsDetected = array();
	foreach( $detectLang as $langId=>$nativeChars ) {
		$langsDetected[$langId] = 0;
		foreach( $nativeChars as $nativeChr )
			if( preg_match( "/$nativeChr/ui", $text ) )
				$langsDetected[$langId] += 1 / count( $nativeChars );
	}

	# Get the most preferred language for this text
	$langsList = array_keys( $detectLang );
	$lang = null;
	$langIndexMax = 0;
	foreach( $langsDetected as $langId=>$index )
		if( $index > $langIndexMax ) {
			$langIndexMax = $index;
			$lang = $langId;
		}
	
	return $lang;
	
}