Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> количество символов, русские + латин 
:(
    Опции темы
Zakir_Kadiri
  Дата 11.10.2007, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 22.6.2007
Где: Baku

Репутация: нет
Всего: нет



Привет всем. Рад что заного создаю тему smile Но не рад за то что у меня такая проблема :(

Есть текс с русскими и англискими символами. Например
Код

Open Ajax — инициатива, созданная несколькими крупными компаниями для развития технологии Ajax и расширения сферы применения приложений


надо обрезат
Код

Open Ajax — инициатива, созданная нескол...


надо чтоб только 40 символа принтовал пхп. Если только на русском или на латинском то не проблема, но они вместе ругаеться. У каго то есть идеи, кто нибуд ранше встречалься такой проблемой smile 
PM   Вверх
IAmEternaL
Дата 11.10.2007, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 8.10.2007
Где: Киев, Украина

Репутация: нет
Всего: нет



подожди... тебе надо просто первые 40 символов вывести?
Код

$str = 'Open Ajax — инициатива, созданная несколькими крупными компаниями для развития технологии Ajax и расширения сферы применения приложений';
echo substr($str, 0, 40);

 smile 
подозреваю, что задача не в этом - но как описал суть проблемы, так и отвечаю
PM MAIL ICQ Skype   Вверх
Zakir_Kadiri
  Дата 11.10.2007, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 22.6.2007
Где: Baku

Репутация: нет
Всего: нет



Цитата(IAmEternaL @  11.10.2007,  12:46 Найти цитируемый пост)
подожди... тебе надо просто первые 40 символов вывести?
Выделить всёкод PHP
1:
2:
    
$str = 'Open Ajax — инициатива, созданная несколькими крупными компаниями для развития технологии Ajax и расширения сферы применения приложений';
echo substr($str, 0, 40);

 smile 
подозреваю, что задача не в этом - но как описал суть проблемы, так и отвечаю 


Мда... Ты так ответил что буд то я вообше нечего не знаю о пхп. Даже не говорю о программирование.
Ты так делай. замени 40 на 41 и посмотри что случиться. тогда я буду посмеятся smile 
PM   Вверх
vasac
Дата 11.10.2007, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 1
Всего: 36



http://ru2.php.net/mb_substr это не поможет?
PM WWW   Вверх
Zakir_Kadiri
  Дата 11.10.2007, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 22.6.2007
Где: Baku

Репутация: нет
Всего: нет



Это не дефаулт :(
PM   Вверх
IAmEternaL
Дата 11.10.2007, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 8.10.2007
Где: Киев, Украина

Репутация: нет
Всего: нет



сразу бы так
есть два варианта решения

первый
Код

$str = iconv('UTF-8', 'CP1251', 'Open Ajax — инициатива, созданная несколькими крупными компаниями для развития технологии Ajax и расширения сферы применения приложений');
echo iconv('CP1251', 'UTF-8', substr($str, 0, 40));

в данном случае, как мы видим, сперва из ютф фигачим это дело в ту кодировку, в которой наши кириллические символы будут кодироватся одним байтов, после чего сабстр и обратная конвертация
токмо надо учитывать, шо специфические ютф символы (те, которые в cp1251 не содержаться) могут быть потеряны (ну - предположительно)

второй:
Код

$str = 'Open Ajax — инициатива, созданная несколькими крупными компаниями для развития технологии Ajax и расширения сферы применения приложений';
preg_match('/(.{0,40}).*/u', $str, $matches);
echo $matches[1];

работает отлично и проще, + грамотно по отношению к ютф в принципе
PM MAIL ICQ Skype   Вверх
Zakir_Kadiri
  Дата 11.10.2007, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 22.6.2007
Где: Baku

Репутация: нет
Всего: нет



Цитата(IAmEternaL @  11.10.2007,  16:18 Найти цитируемый пост)
Выделить всёкод PHP
$str = 'Open Ajax — инициатива, созданная несколькими крупными компаниями для развития технологии Ajax и расширения сферы применения приложений';
preg_match('/(.{0,40}).*/u', $str, $matches);
echo $matches[1];

работает отлично и проще, + грамотно по отношению к ютф в принципе


спасиба браток smile . Ты выручил меня из этого положения, и я выручу тебя когда тебе помош понадобиться smile 

PM   Вверх
IAmEternaL
Дата 11.10.2007, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 8.10.2007
Где: Киев, Украина

Репутация: нет
Всего: нет



рад что ты выбрал более правильный вариант решения ;)

удачи
PM MAIL ICQ Skype   Вверх
Zakir_Kadiri
  Дата 11.10.2007, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 22.6.2007
Где: Baku

Репутация: нет
Всего: нет



Код

preg_match('/(.{0,40}).*/u', $str, $matches);

Если чесна можно ещо модифицирироват
Код

preg_match('/(.{40})/u', $str, $matches);

Но одново я не смог. Надо чтоб
Код

...инициатива, созданная несколькими крупными компаниями...

где то максималное длина символов 30 символ

IAmEternaL, если и в этом ты мне паможеш я помогу в любом деле (почти  smile )
PM   Вверх
IAmEternaL
Дата 11.10.2007, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 8.10.2007
Где: Киев, Украина

Репутация: нет
Всего: нет



Цитата(Zakir_Kadiri @ 11.10.2007,  13:08)
Код

preg_match('/(.{0,40}).*/u', $str, $matches);

Если чесна можно ещо модифицирироват
Код

preg_match('/(.{40})/u', $str, $matches);

Но одново я не смог. Надо чтоб
Код

...инициатива, созданная несколькими крупными компаниями...

где то максималное длина символов 30 символ

IAmEternaL, если и в этом ты мне паможеш я помогу в любом деле (почти  smile )

модифицировать так - не стоит
потому что в итоге, ты получишь нарезку строки по 40 символов в $matches (вот почему (.{0,40}).*) и, кроме того, она (проверка) не будет работать с строками меньше 40 символов (вот почему (.{0,40}).*)

обьясни подробнее последнюю просьбу
тебе нужно обрезать не по символам, а по словам? ну типа чтобы обрывало не на полуслове а в его окончании

или что ты имел в виду?

Это сообщение отредактировал(а) IAmEternaL - 11.10.2007, 16:59
PM MAIL ICQ Skype   Вверх
sTa1kEr
Дата 11.10.2007, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 5
Всего: 146



Цитата(IAmEternaL @  11.10.2007,  16:55 Найти цитируемый пост)
потому что в итоге, ты получишь нарезку строки по 40 символов в $matches (вот почему (.{0,40}).*)

Не правда. Это preg_match(), а не preg_match_all(), по этому попадут только первые 40 символов, а дальше функция прекратит выполнение.
PM MAIL   Вверх
Zakir_Kadiri
  Дата 13.10.2007, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 22.6.2007
Где: Baku

Репутация: нет
Всего: нет



Цитата(IAmEternaL @  11.10.2007,  18:55 Найти цитируемый пост)
обьясни подробнее последнюю просьбу
тебе нужно обрезать не по символам, а по словам? ну типа чтобы обрывало не на полуслове а в его окончании

или что ты имел в виду?

Ну хорошо обясну все подробно.
Есть поисковой механизм. Ищет слово в тексте и должно принтовать обрезок из текста который соотвествует следующему правилу:

Код

max=100

((...firstext{(max-found_text.length)/2})found_text(endtext...{0,(max-found_text.length)/2})){max}

это вроде алгоритм... не знаю как понятно я описал smile , но думаю всем понятно будеть

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.1065 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.