Xwab
Форумыnavigate_nextПрограммирование на PHP

Нужна функция определения языка
Сообщения
Morty

Есть переменная содержащая текст.
Надо функция которая будет определять язык текста (русский или английский) в этой переменной.
Напишите, пожалуйста, кому не сложно. А то я с регулярками не дружу

21 Дек 2011, 19:45
SL_NeKrOmAnT

Ну функции такой нет.
Можно регуляркой определить по наличию букв того или того алфавита.
А если текст содержит и русские и английские буквы думаю не получиться.
Я сам с регулярками на вы.
добавлено спустя 7 минут:
я думаю так..
if(preg_match('[А-Яа-я]+',$string))
{
echo 'русский';
}
elseif(preg_match('[A-Za-z]+',$string))
{
echo 'англ.';
}

21 Дек 2011, 20:15
Float

а почему elseif а не просто else, в php так не принято?

21 Дек 2011, 20:17
SL_NeKrOmAnT

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

21 Дек 2011, 20:19
Morty

SL_NeKrOmAnT, Спасибо, это мне вполне подойдёт =)

21 Дек 2011, 20:35
Float

А если текст англо-русский?

21 Дек 2011, 20:41
Morty

Float, А такого текста не будет просто. Буквы будут либо английские либо русские.

21 Дек 2011, 20:44
SL_NeKrOmAnT

Float, А если читать первый пост внимательнее?
Написано Русский ИЛИ Английский.

21 Дек 2011, 20:45
Float

Ну а мало ли, какие случаи в интернете бывают. Символы там всякие

21 Дек 2011, 20:47
Fever

3, с таких мелочей и начинается говнокодерство

лучше уж так:
if(preg_match('(?i)\w\D[^\_]+',$string))
{
$IsL = 1;
}
elseif(preg_match('(?i)\D[^\_][^a-z]+',$string))
{
$IsK = 1;
}
if (variant_xor($IsL,$IsK))
{
if ($IsL==1)
{
echo 'english';
}
else
{
echo 'русский';
}
}
else
{
echo 'invalid or mixed text';
}

21 Дек 2011, 20:50
Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.