Количество русских и английских букв в слове

  • Автор темы Mouse_red
  • Дата начала

Mouse_red

Guest
Количество русских и английских букв в слове

Подскажите, пожалуйста, есть ли в php стандартные функции по подсчету символов в переменной?
Например нужно посчитать сколько английских букв и русских в слове.
 

Demiurg

Guest
ты знаешь как отличить английское слово от русского ?
 

Mouse_red

Guest
Можно сделать путем перебора букв и сравнивать по маске

PHP:
$string = "abcабв";
for ($a=0; $a<length($string); $a++) {
  if (strstr("abcdefj...",substr($string,$a,1))) echo "английская буква";
  else echo "русская буква";
}
но этот сбособ мне кажется несколько неудачным
может существует стандартная функция по подстчету?
 

Demiurg

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

specialist

Guest
Re: Количество русских и английских букв в слове

Автор оригинала: Mouse_red
Например нужно посчитать сколько английских букв и русских в слове.
Можно сделать например вот так
PHP:
<?
setlocale(LC_ALL,"rus");
$string='проверкаabd';
echo 'Тестовая строка = '.$string;
preg_match_all("/[а-яА-Я]/",$string, $matches);
preg_match_all("/[a-zA-Z]/",$string, $matches2);
echo '<br> Количество русских букв = '.count($matches[0]);
echo '<br> Количество английских букв = '.count($matches2[0]);
?>
 

SelenIT

IT-лунатик :)
specialist
1) Для чистоты эксперимента вбей в $string весь английский и весь русский алфавит, желательно в обоих регистрах;
2) повтори эксперимент при разных локалях для разных кодировок.
Идея без сомнения полезная, но ее нужно доработать.
 

specialist

Guest
SelenIT
при вбивании всего алфавита (англ и русский в разных регистрах)
обрабатывается нормально в разных кодировках, за исключением того, что русская буква 'ё' не ищется :(
 
Сверху