[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: wordwrap и utf-8
Страницы: 1, 2
aH6y
Есть обрезка строки:
wordwrap($mes, $n, " ", 1);

В utf-8 с русскими символами работает, но режет русские символы по длине $n/2

Нашел рабочий вариант с использованием iconv():
$mes = iconv("cp1251", "UTF-8", $mes);
$mes = wordwrap($mes, $n, " ", 1);
$mes = iconv("UTF-8", "cp1251", $mes);

Таким способом функция режет русские символы по длине $n/4

Подскажите что можно сделать чтоб и русские символы и все остальные резать одинаково. И как рациональнее это сделать.
Зарание спасибо.

_____________
Процесс написания своего велосипеда повышает профессиональный уровень программиста.
kirik
Цитата (aH6y @ 14.12.2010 - 03:56)
$mes = iconv("cp1251", "UTF-8", $mes);
$mes = wordwrap($mes, $n, " ", 1);
$mes = iconv("UTF-8", "cp1251", $mes);

Бросай эти извращения smile.gif
php мануал наш друг и брат. Например вот.
aH6y
kirik
Я знаю, просто привёл пример того, что Я искал...

_____________
Процесс написания своего велосипеда повышает профессиональный уровень программиста.
linker
Очень странно, что это вообще работает, имхо надо так
$mes = iconv("UTF-8", "cp1251", $mes);
$mes = wordwrap($mes, $n, " ", 1);
$mes = iconv("cp1251", "UTF-8", $mes);
В мануале слишком жестоко, что буде если текст размера хотя бы в несколько метров.

_____________
Gear Framework
Gear Framework на Github
aH6y
linker
Пример не мой biggrin.gif
kirik
Спасибо работает smile.gif

_____________
Процесс написания своего велосипеда повышает профессиональный уровень программиста.
twin
kirik
Цитата
php мануал наш друг и брат

Не в этом случае.
Та функция
а) большая
б) ресурсоемкая (посимвольный анализ для php зло)
в) не работает :)

Вот полный аналог для utf-8
   function mbWordwrap($str, $width = 74, $break = "\n", $cut = false) 
{
return preg_replace('#([\S\s]{'. $width .'}'. ($cut ? '' : '\s') .')#u', '$1'. $break , $str);
}


_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
aH6y
twin
Спасибо biggrin.gif

Твоя функция в 20 раз быстрее)

_____________
Процесс написания своего велосипеда повышает профессиональный уровень программиста.
inpost
aH6y
Ты проверял? Кинь отчет по скорости =)

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
aH6y
inpost
Ну да проверил. Примерно в 20 раз быстрее вариант twin'a

_____________
Процесс написания своего велосипеда повышает профессиональный уровень программиста.
inpost
aH6y
так и дождёшься от "таких" людей отчета, прийдется идти самому проверять!

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
aH6y
inpost
Я тебе ничего не должен.

_____________
Процесс написания своего велосипеда повышает профессиональный уровень программиста.
inpost
aH6y
это понятно, тебя что-то переклинило в мою сторону, и ты без повода какой-то дикий, бросаешься на меня. А вот по нормальному попросил показать код проверки, нет, снова таки своё "я". Твоё дело, сам проверю. А в чужие тараканы лезть не буду, захочешь, сам напишешь в ЛС, какие у тебя ко мне проблемы.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
twin
Гы. Вот теперь он точно нам друг. smile.gif

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
aH6y
twin
Пришлось изменить т.к. функция работала некорректно.
function mbWordwrap($str, $width = 44, $break = ' ', $cut = true) {
return preg_replace('#([\S]{'.$width.'}'. ($cut ? '' : '\s') .')#u', '$1'. $break , $str);
}


_____________
Процесс написания своего велосипеда повышает профессиональный уровень программиста.
zezst
а подскажите, пожалуйста, где мне почитать, что конкретно делает эта строчка
return preg_replace('#([\S]{'.$width.'}'. ($cut ? '' : '\s') .')#u', '$1'. $break , $str);

я сейчас учу php и вот столкнулся с такой же проблемой.
только с другой функцией
$string = "тут слова какие-то";
$string1 = str_split($string, 4);
foreach($string1 as $key)
{
echo "$key I</br>";
}

тоже проблема с рускими буковками.
если можно то подскажите ссылочкой.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.