строка моего XML выглядит так:
<observation_time_rfc822>Thu, 09 Oct 2014 22:59:16 +0200</observation_time_rfc822>
Я хватаю это и выдаю
$ob_time= $xml->observation_time_rfc822;
echo $ob_time;
Вывод выглядит так:
Чт, 09 Окт 2014 22:59:16 +0200
Но то, что мне нужно, должно выглядеть так (да, забавный «% 3A» заменяет «:»)
2014-10-09+22% 3A59% 3A16
Я думаю, что замена строки может сделать это, пожалуйста, кто-то может помочь мне узнать!
Спасибо!
редактировать: Используйте решение @ Ghost, оно правильно обрабатывает смещение часового пояса.
Сначала вам нужно переформатировать дату. Вы делаете это, анализируя это с strtotime
и отформатировать его с date
функция. Эти «забавные замены% 3A» на самом деле являются символами в кодировке URL:
$date = date('Y-m-d H:i:s', strtotime($ob_time));
$date = urlencode($date); // 2014-10-09+20%3A59%3A16
Вы могли бы использовать DateTime
класс в этом случае, затем используйте urlencode()
:
Пример:
$ob_time = (string) $xml->observation_time_rfc822;
$date = DateTime::createFromFormat('D, d M Y H:i:s O', $ob_time);
$real_date = $date->format('Y-m-d H:i:s');
echo urlencode($real_date); // 2014-10-09+22%3A59%3A16