Сочетая регулярное выражение и strtotime - PullRequest
1 голос
/ 10 февраля 2012

Я пытаюсь улучшить читаемость опубликованной даты, извлекаемой из файла Twitter в формате XML.

В настоящее время отображается дата 2012-02-10T14:20:08Z

.

Я применил к этому регулярное выражение и теперь отображаю 2012-02-10 14:20:08 GMT

Теперь все, что мне нужно сделать, - это преобразовать дату из формата США в формат Великобритании. Я посмотрел на это и вижу, что можно использовать функцию strtodate . Но я не уверен, как это сделать.

                <strong>Tweets within 10 miles radius of London Eye</strong></br>
                <?php
                $feed = simplexml_load_file('http://search.twitter.com/search.atom?geocode=' . $feed1 . '%2C' . $range . '%22london%22&' . $lang . '&' . $amount);
                if ($feed) {
                    foreach ($feed->entry as $item) {

                        $string = $item->published;

//                            $unixdate = strtotime($string);
//                            $ukDate = date('d/m/20y', $unixdate);

                        $find = array('/T/', '/Z/');
                        $replace = array(' ', ' GMT');


                        echo '<a href=\'' . $item->link->attributes()->href . '\'>' . $item->title . '</a>', '</br>' . preg_replace($find, $replace, $string), '</br>';
                    }
                }
                else
                    echo "Cannot find Twitter feed!"
                    ?>

Можно ли объединить эти функции вместе или есть лучший способ сделать это?

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 10 февраля 2012
foreach($feed->entry as $item) {
    $date = date("d/M/Y g:iA T",strtotime($item->published));
    echo '<a href="' . $item->link->attributes()->href . '">' . $item->title . '</a></br>' . $date . '</br>';   
}

См. Синтаксис формата date(), если вы хотите изменить его. См. strtotime() документацию, чтобы понять, как это работает.

1 голос
/ 10 февраля 2012

Что-то вроде этого должно сделать это. Просто передайте дату для форматирования с помощью регулярного выражения в функцию strtotime. Вам также может понадобиться удалить строку GMT из регулярной даты.

$date = preg_replace($find, $replace, $string);
$formatted = date('d/m/Y', strtotime($date));

echo '<a href=\'' . $item->link->attributes()->href . '\'>' . $item->title . '</a>', '</br>' . $formatted, '</br>';
0 голосов
/ 10 февраля 2012

Нет необходимости в strtodate и regex - просто используйте date () и передайте в соответствующем формате. Смотри http://www.php.net/manual/en/function.date.php.

...