- Я хочу знать, как работает strtotime (функция даты php)?
- как разобрать строку Like "15 сентября 2012" на отметку времени
- есть ли лучший алгоритм?
моя цель - изменить эту функцию для персидского языка
моя цель - изменить эту функцию для персидского языка
Вы можете просмотреть исходный код PHP ( https://github.com/php/php-src) и функцию поиска увидеть его реализацию.
ОБНОВЛЕНИЕ
Вот алгоритм работы функции strtotime() https://github.com/php/php-src/blob/master/ext/date/php_date.c#L1324
С Уважением!.
так как strtotime принимает ввод на английском языке, я бы рекомендовал взять ввод на персидском языке: "15 (SOMETHING_PERSIAN) 2012" и заменить требуемую строку (наверное, вам нужно какое-то RegExp и оператор switch) и сделать так, чтобы "15 (SOMETHING_ENGLISH) 2012" и ЗАТЕМ отправить его на strtotime
Я хочу знать, как работает strtotime (функция даты php)?
Перейдите сюда: https://github.com/php/php-src/blob/master/ext/date/lib/parse_date.c
Найдите timelib_strtotime
.
забудьте об этом, используйте расширение php Intl. в будущем станет частью ядра php.
<?php
// format
$format = datefmt_create('fa_IR@calendar=persian', IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'Asia/Tehran', IntlDateFormatter::TRADITIONAL, 'yyyy/MM/dd HH:mm');
// time in locale as you wish
var_dump(datefmt_format($format, time())); // '۱۳۹۱/۰۲/۰۴ ۱۹:۱۵'
поддержите проект ICU, если вы хотите поддерживать персидский язык в i18n для всех языков.
Метод, который фактически анализирует строку, находится в метод scan()
от parse_date.re. Там вы найдете все strtotime
ключевые слова и их поведение.
Эта библиотека включена из https://github.com/derickr/timelib.