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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Непонятки с функцией sprintf и форматом "%s/%s/%s" 
V
    Опции темы
Ciber SLasH
Дата 7.4.2006, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

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



Столкнулся с такой проблемой, если определена переменная-формат $lang['DateFormat']="%s/%s/%s";, то такой кусок кода:
Код

sprintf ($lang['DateFormat'],$this->day,$this->month,$this->year);

возвращает строку не так как было задумано, а автоматически изменяет формат на "%2$s/%1$s/%3$s" и дата выглядит уже по-другому. smile

Кто-нибудь знает как это лечится без изменения переменной формата?
PM   Вверх
skalex
Дата 7.4.2006, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


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

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



А покажи дамп $this ...
Код
echo '<pre>';
print_r($this);

PM   Вверх
Ciber SLasH
Дата 7.4.2006, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

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



Переменные выводятся правильно. К примеру в лог скидывается такая инфа:
Цитата
day: 3
month: 2
year: 2006

но функция глючит как не странно в IE, в Опере всё нормально. Я конечно понимаю, что это звучит глупо, т.к. браузер не влияет на работу PHP, но факт остаётся фактом.
А решил я это безобразие так:
Код

$f = preg_replace("/[\d\$]*/", "", $lang['DateFormat']);
return sprintf ($f,$this->day,$this->month,$this->year);

короче поудалял регом все цифры и знаки доллара из формата... smile
PM   Вверх
Ciber SLasH
Дата 7.4.2006, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

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



Однако, на этом сюрпризы не закончились...
С датами вообще полный П. Есть ещё такая переменная-формат $lang['DateTimeSPHP']="d/m H:i";, выводится дата так: echo Date($lang['DateTimeSPHP']); и опять в IE6 идут глюки и в FireFox 1.0.1, они каким-то макаром автоматически меняют положение дня и месяца в формате и формат приобретает вид m/d H:i а Opera 8.53 отображает как задумано.

Где сабака порылась? smile
PM   Вверх
Ciber SLasH
Дата 7.4.2006, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

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



Отбой парни, я не доглядел, что у меня формат берётся в зависимости от текущей локали, а разные браузеры по разному сообщают серверу эту инфу. IE шлёт en_us, а Опера en. smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




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


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

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