Собственно необходимо - обрезать строку Вроде бы задачка простая, но решить её не получается. Есть такая функция sprintf (), которая позволяет обрезать строку но заданному количеству, но беда в том, что эта функция корректно работает только с английским текстом Текст на кириллице обрезается, но выводится не весь и заканчивается символом �
Для записи sprintf("%0.100s\n",$str) выводится 54 символа и квадратик в конце, при этом длина строки составляет 101 символ.
Подскажите плз, может я неправильно записал аргументы? Формат записи функции подсмотрел здесь
Или другое решение этой задачи
Спустя 2 минуты, 21 секунда (22.08.2012 - 14:05) alexbel2404 написал(а):
Спустя 19 минут, 51 секунда (22.08.2012 - 14:25) oleg_n написал(а):
alexbel2404 Спасибо за участие, но результат тот же
Записал так mb_substr($str,0,100)
Функция substr () - тоже самое
Записал так mb_substr($str,0,100)
Функция substr () - тоже самое
Спустя 11 минут, 31 секунда (22.08.2012 - 14:37) pak написал(а):
substr($str,0, -100);
Спустя 11 минут, 18 секунд (22.08.2012 - 14:48) oleg_n написал(а):
pak
Результат получше!!! Только -100, это обрезка с обратной стороны То бишь, чтобы мне получить 100 символов спереди, нужно вычислить длину всей строки, отнять от неё 100, а результат запихнуть в 3-й аргумент
Спасибо
Результат получше!!! Только -100, это обрезка с обратной стороны То бишь, чтобы мне получить 100 символов спереди, нужно вычислить длину всей строки, отнять от неё 100, а результат запихнуть в 3-й аргумент
Спасибо
Спустя 6 минут, 32 секунды (22.08.2012 - 14:54) oleg_n написал(а):
Блин, странная хрень длина строки 252 символа, если ставить 3-м аргументом -100, выдает строку 152 символа, а если подставлять -152, то результат, то же самый что и в постах 1 и 3.
Но дальше еще смешнее, любое число конечных символов, отличное от 100, выводится корректно, в смысле без квадратика в конце (пробовал 98 и 102). Пойду покурю результат исследований
=====
П.С. Все равно неправильно работает, пересчитал количество знаков, которые отображаются - их 75, но при этом длина всей строки которая должна быть отображена - 141!
Длина всей строки 241 символ.
=====
Строка другой длины - результат тот же - вместо положенных 100 символов, отображается в лучшем случае 56
Но дальше еще смешнее, любое число конечных символов, отличное от 100, выводится корректно, в смысле без квадратика в конце (пробовал 98 и 102). Пойду покурю результат исследований
=====
П.С. Все равно неправильно работает, пересчитал количество знаков, которые отображаются - их 75, но при этом длина всей строки которая должна быть отображена - 141!
Длина всей строки 241 символ.
=====
Строка другой длины - результат тот же - вместо положенных 100 символов, отображается в лучшем случае 56
Спустя 26 минут, 44 секунды (22.08.2012 - 15:21) dron4ik написал(а):
$st = 'ywfdfs вак цука ва цауцау квыавыцапвыа terror';
for ($i=0; $i<10; $i++)
$text.= $st[$i];
пробуй
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 в�
====
Беда в кириллице, любой английский текст, обрезается без проблем, любой из вышеперечисленных функций !!
Спустя 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);
}
а так?
$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) |
а так? |
Тоже самое
Правда числовые результаты иные - длина строки 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, Спасибо, действительно указание кодировки помогает!!! Была у меня мысль, указать кодировку явно, но чего то забылся это сразу сделать
Длина строки после применения функции - 180, а отображается на экране - ровно 100!
Длина строки после применения функции - 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
Чтобы постоянно, явно не указывать кодировку, можно ее один раз указать через 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 - Спасибо, решение найдено