Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Закрытая темаСоздание новой темыСоздание опроса

> Как обрезать строку до нужной величины символов?
oleg_n  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 71
Пользователь №: 32089
На форуме: 4 года, 11 месяцев, 16 дней
Карма:

Не курю:
22 года, 2 месяца, 26 дней


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

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1084
Пользователь №: 28824
На форуме: 5 лет, 8 месяцев, 7 дней
Карма: 55




PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
oleg_n  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 71
Пользователь №: 32089
На форуме: 4 года, 11 месяцев, 16 дней
Карма:

Не курю:
22 года, 2 месяца, 26 дней


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

Это сообщение отредактировал oleg_n - 22.08.2012 - 15:31
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
pak  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Александр
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 401
Пользователь №: 22806
На форуме: 6 лет, 8 месяцев, 29 дней
Карма: 24

Не курю:
7 лет, 2 месяца, 25 дней



substr($str,0, -100);
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
oleg_n  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 71
Пользователь №: 32089
На форуме: 4 года, 11 месяцев, 16 дней
Карма:

Не курю:
22 года, 2 месяца, 26 дней


pak
Результат получше!!! Только -100, это обрезка с обратной стороны laugh.gif То бишь, чтобы мне получить 100 символов спереди, нужно вычислить длину всей строки, отнять от неё 100, а результат запихнуть в 3-й аргумент rolleyes.gif
Спасибо smile.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
oleg_n  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 71
Пользователь №: 32089
На форуме: 4 года, 11 месяцев, 16 дней
Карма:

Не курю:
22 года, 2 месяца, 26 дней


Блин, странная хрень длина строки 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

Это сообщение отредактировал oleg_n - 22.08.2012 - 16:13
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dron4ik  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1696
Пользователь №: 31058
На форуме: 5 лет, 2 месяца, 15 дней
Карма: 24




$st = 'ywfdfs вак цука ва цауцау квыавыцапвыа terror';


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

пробуй


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
oleg_n  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 71
Пользователь №: 32089
На форуме: 4 года, 11 месяцев, 16 дней
Карма:

Не курю:
22 года, 2 месяца, 26 дней


Цитата (dron4ik @ 22.08.2012 - 16:21)
пробуй

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


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

Это сообщение отредактировал oleg_n - 22.08.2012 - 16:35
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dron4ik  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1696
Пользователь №: 31058
На форуме: 5 лет, 2 месяца, 15 дней
Карма: 24




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

а так?


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Winston  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 9509
Пользователь №: 18161
На форуме: 7 лет, 9 месяцев, 3 дня
Карма: 552




mb_substr($str,0,100, 'UTF-8');
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
oleg_n  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 71
Пользователь №: 32089
На форуме: 4 года, 11 месяцев, 16 дней
Карма:

Не курю:
22 года, 2 месяца, 26 дней


Цитата (dron4ik @ 22.08.2012 - 16:40)

а так?

Тоже самое sad.gif
Правда числовые результаты иные - длина строки 145, отображается 81.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Hello  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 837
Пользователь №: 32378
На форуме: 4 года, 10 месяцев, 16 дней
Карма: 50




mb_substr($str,0,99)


--------------------
VPS от 5$, первые 2 месяца - бесплатно.
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
oleg_n  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 71
Пользователь №: 32089
На форуме: 4 года, 11 месяцев, 16 дней
Карма:

Не курю:
22 года, 2 месяца, 26 дней


Winston, Спасибо, действительно указание кодировки помогает!!! Была у меня мысль, указать кодировку явно, но чего то забылся это сразу сделать smile.gif
Длина строки после применения функции - 180, а отображается на экране - ровно 100!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dron4ik  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1696
Пользователь №: 31058
На форуме: 5 лет, 2 месяца, 15 дней
Карма: 24




preg_split("/.{100}/u",$str)
а?


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Winston  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 9509
Пользователь №: 18161
На форуме: 7 лет, 9 месяцев, 3 дня
Карма: 552




oleg_n
Чтобы постоянно, явно не указывать кодировку, можно ее один раз указать через http://ua.php.net/manual/ru/function.mb-in...al-encoding.php
PMСайт пользователя
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Закрытая темаСоздание новой темыСоздание опроса