[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как обрезать строку до нужной величины символов?
oleg_n
Приветствую smile.gif
Собственно необходимо - обрезать строку rolleyes.gif Вроде бы задачка простая, но решить её не получается. Есть такая функция sprintf (), которая позволяет обрезать строку но заданному количеству, но беда в том, что эта функция корректно работает только с английским текстом sad.gif Текст на кириллице обрезается, но выводится не весь и заканчивается символом
Для записи sprintf("%0.100s\n",$str) выводится 54 символа и квадратик в конце, при этом длина строки составляет 101 символ.
Подскажите плз, может я неправильно записал аргументы? Формат записи функции подсмотрел здесь
Или другое решение этой задачи rolleyes.gif



Спустя 2 минуты, 21 секунда (22.08.2012 - 14:05) alexbel2404 написал(а):

Спустя 19 минут, 51 секунда (22.08.2012 - 14:25) oleg_n написал(а):
alexbel2404 Спасибо за участие, но результат тот же sad.gif
Записал так mb_substr($str,0,100)
Функция substr () - тоже самое mad.gif

Спустя 11 минут, 31 секунда (22.08.2012 - 14:37) pak написал(а):

substr($str,0, -100);

Спустя 11 минут, 18 секунд (22.08.2012 - 14:48) oleg_n написал(а):
pak
Результат получше!!! Только -100, это обрезка с обратной стороны laugh.gif То бишь, чтобы мне получить 100 символов спереди, нужно вычислить длину всей строки, отнять от неё 100, а результат запихнуть в 3-й аргумент rolleyes.gif
Спасибо smile.gif

Спустя 6 минут, 32 секунды (22.08.2012 - 14:54) oleg_n написал(а):
Блин, странная хрень длина строки 252 символа, если ставить 3-м аргументом -100, выдает строку 152 символа, а если подставлять -152, то результат, то же самый что и в постах 1 и 3.
Но дальше еще смешнее, любое число конечных символов, отличное от 100, выводится корректно, в смысле без квадратика в конце blink.gif unsure.gif (пробовал 98 и 102). Пойду покурю результат исследований ph34r.gif

=====

П.С. Все равно неправильно работает, пересчитал количество знаков, которые отображаются - их 75, но при этом длина всей строки которая должна быть отображена - 141! blink.gif
Длина всей строки 241 символ.

=====

Строка другой длины - результат тот же - вместо положенных 100 символов, отображается в лучшем случае 56 mad.gif

Спустя 26 минут, 44 секунды (22.08.2012 - 15:21) dron4ik написал(а):
$st = 'ywfdfs вак цука ва цауцау квыавыцапвыа terror';


for ($i=0; $i<10; $i++)
$text.= $st[$i];

пробуй

Спустя 7 минут, 26 секунд (22.08.2012 - 15:29) oleg_n написал(а):
Цитата (dron4ik @ 22.08.2012 - 16:21)
пробуй

Результат ywfdfs в�


====
Беда в кириллице, любой английский текст, обрезается без проблем, любой из вышеперечисленных функций !! ph34r.gif

Спустя 11 минут, 36 секунд (22.08.2012 - 15:40) dron4ik написал(а):
$str = 'sgifdug efryewao fisoehr аырвапгрк гушршк iuwrepg dr';
$num = 10;// количество выводимых знаков
$a = iconv_strlen($str , 'UTF-8') - $num;
if($a > 0){
substr($str,0, -$a);
}

а так?

Спустя 11 минут, 19 секунд (22.08.2012 - 15:52) Winston написал(а):
mb_substr($str,0,100, 'UTF-8');

Спустя 3 минуты, 17 секунд (22.08.2012 - 15:55) oleg_n написал(а):
Цитата (dron4ik @ 22.08.2012 - 16:40)

а так?

Тоже самое sad.gif
Правда числовые результаты иные - длина строки 145, отображается 81.

Спустя 1 минута, 30 секунд (22.08.2012 - 15:56) Hello написал(а):
mb_substr($str,0,99)

Спустя 7 минут, 40 секунд (22.08.2012 - 16:04) oleg_n написал(а):
Winston, Спасибо, действительно указание кодировки помогает!!! Была у меня мысль, указать кодировку явно, но чего то забылся это сразу сделать smile.gif
Длина строки после применения функции - 180, а отображается на экране - ровно 100!

Спустя 1 минута, 35 секунд (22.08.2012 - 16:06) dron4ik написал(а):
preg_split("/.{100}/u",$str)
а?

Спустя 3 минуты (22.08.2012 - 16:09) Winston написал(а):
oleg_n
Чтобы постоянно, явно не указывать кодировку, можно ее один раз указать через http://ua.php.net/manual/ru/function.mb-in...al-encoding.php

Спустя 1 минута, 51 секунда (22.08.2012 - 16:10) oleg_n написал(а):
Цитата (Hello @ 22.08.2012 - 16:56)
mb_substr($str,0,99)

Не работает, так как мне нужно!

dron4ik - Спасибо, решение найдено smile.gif
Быстрый ответ:

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