Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: длина строки utf-8
 
 автор: sergi   (27.07.2008 в 03:05)   письмо автору
 
 

есть страница в utf-8
пытаюсь сосчитать кол-во символов с mb_strlen()
так эта функция и перенос строки считает за два символа
вот этот код пишет мне длину "3"

<?php
$str= "а
";
echo mb_strlen($str, "utf-8");
?>

если же написать $str ="a"; т.е. все в одной строчке тогда все в порядке

но как же сосчитать реально сколько символов в строке?
спасибо

  Ответить  
 
 автор: BinLaden   (27.07.2008 в 04:12)   письмо автору
 
   для: sergi   (27.07.2008 в 03:05)
 

Перевод строки в большинстве случаев представлен в виде 2-х байт. В любой кодировке, включая UTF-8. Как один символ перевод строки не рассматривается, так как он в данном случае сам состоит из двух символов. Управляющих. Возврат каретки и собственно перенос.

Но вот что возврат каретки забыл в XXI веке, сказать правда трудно.

  Ответить  
 
 автор: Sergi   (27.07.2008 в 04:30)   письмо автору
 
   для: BinLaden   (27.07.2008 в 04:12)
 

ok, это конечно все мило что перенос строки и возврат каретки занимают два байта,
НО сосчитать реально символы можно или нет? Без кареток

  Ответить  
 
 автор: winflip   (27.07.2008 в 04:46)   письмо автору
 
   для: Sergi   (27.07.2008 в 04:30)
 

Замени все знаки переноса и возврата каретки на пустую стоку с помощью функции str_replace. А дальше считай количество.

  Ответить  
 
 автор: noob   (27.07.2008 в 05:40)   письмо автору
 
   для: Sergi   (27.07.2008 в 04:30)
 

Он тебе и показывает сколько РЕАЛЬНО символов, а не сколько ты видишь ;)

Ты определись что тебе нужно. Только буквы? Или буквы с пробелами? Или переносы строки тоже нужны? И если не нужны переносы, то какие именно, в конце строки, или в середине тоже?


<?
$a
=trim($a);                                 # убирает переносы строк и пробелы ТОЛЬКО ПО КРАЯМ переменной
                                                       # то есть в начале и в конце

$a str_replace("\r\n"""$a);  # убирает переносы строки windows
$a str_replace("\n"""$a);    # убирает переносы строки unix
$a str_replace(" """$a);      # убиает пробелы
?>


вроде так.

  Ответить  
 
 автор: BinLaden   (27.07.2008 в 15:13)   письмо автору
 
   для: Sergi   (27.07.2008 в 04:30)
 

> НО сосчитать реально символы можно или нет?

С чего Вы вообще взяли, что перевод строки - это вообще символ, раз уж на то пошло?

  Ответить  
 
 автор: FireTiger   (28.07.2008 в 18:22)   письмо автору
 
   для: BinLaden   (27.07.2008 в 15:13)
 

Конечно отхожу от темы, но вопрос по работе utf8 с функцией strtr(). Если я передаю русский текст в кодировке utf8 этой функции то получаются каракули. Как сделать, чтобы эта функция правильно отрабатывала?

  Ответить  
 
 автор: FireTiger   (28.07.2008 в 18:41)   письмо автору
 
   для: FireTiger   (28.07.2008 в 18:22)
 

немного пошевелил мозгами, придумал немного громоздкое, но рабочее решение, прошу оценить:

<?php
$letters 
= array("а" => "a""б" => "b""в" => "v""г" => "g""д" => "d""е" =>
          
"e""ё" => "yo""ж" => "g""з" => "z""и" => "i""й" => "y""к" => "k",
          
"л" => "l""м" => "m""н" => "n""о" => "o""п" => "p""р" => "r""с" =>
          
"s""т" => "t""у" => "u""ф" => "f""х" => "h""ц" => "ts""ч" => "ch",
          
"ш" => "sh""щ" => "shch""ъ" => """ы" => "i""ь" => """э" => "e""ю" =>
          
"yu""я" => "ya");
      
$var mb_strtolower($var);
      
$var strtr($var$letters);
?>

Может кому-то пригодится ;)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования