Ошибка с регулярными выражениями на php

(Ответов: 4, Просмотров: 566)
  1. Новичок
    • Регистрация: 30.05.2011
    • Сообщений: 27
    • Репутация: 0
    Всем привет!
    Мне нужно сделать так, чтобы регулярное выражение меняло даты на английском языке на даты на русском языке. Я сделал скрипт, но он ничего не меняет и даже ошибка не выводится. Вот скрипт
    Код:
    <?php
    $monthEn = array( '#Jan#', '#Feb#', '#Mar#', '#Apr#', '#May#', '#Jun#', '#Jul#', '#Aug#', '#Sep#', '#Oct#', '#Nov#', '#Dec#' );
            $dayEn = array( '#Mon#', '#Tue#', '#Wed#', '#Thu#', '#Fri#', '#Sat#', '#Sun#' );
            $monthRu = array( 'Янв', 'Фев', 'Мар', 'Апр', 'Мая', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек' );
            $dayRu = array( 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс' );
            $Date = $item->pubDate;
            $Date = preg_replace($monthEn, $monthRu, $Date);
            $Date = preg_replace($dayEn, $dayRu, $Date);
            echo '<br><div id="post-link"><a href="'.$item->link.'">'.$item->pubDate.'</a></div>';
    ?>
    В чем ошибка?
    • 0
  2. Дипломник
    • Регистрация: 29.11.2009
    • Сообщений: 131
    • Репутация: 32
    А зачем тут регулярные выражения, просто функции замены строк же можно использовать http://php.net/manual/en/function.strtr.php например.
    • 1

    Спасибо сказали:

    ololo(19.07.2011),
  3. Гуру Аватар для Twin
    • Регистрация: 30.12.2009
    • Сообщений: 613
    • Репутация: 39
    • Webmoney BL: ?
    ololo, попробуйте вывести переменную $Date после строки $Date = $item->pubDate; и посмотрите какое значение оно получает. Возможно где-то ошибка или замена рано совершается.
    • 0
  4. Новичок
    • Регистрация: 30.05.2011
    • Сообщений: 27
    • Репутация: 0
    Twin, уже все сделал, ошибку нашел. Она была не в выражении, я вместо переменной $Date, где все и заменялось выводил $item->pubDate, а там ничего не менялось. Короче, не заметил я ошибки.
    • 0
  5. Гуру Аватар для 24110
    • Регистрация: 07.09.2009
    • Сообщений: 1,649
    • Репутация: 91
    Вообще в данном случае лучше все делать через str_replace - это быстрее, чем preg_*
    Надо только составить 2 массива одинакового размера.

    <?php
    $pattern = array( 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun' );
    $replacement = array( 'Янв', 'Фев', 'Мар', 'Апр', 'Мая', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс' );

    $Date = str_replace($pattern , $replacement , $item->pubDate);
    echo '<br><div id="post-link"><a href="'.$item->link.'">'.$Date.'</a></div>';

    ?>
    Парам-пам-пам!
    • 0

Похожие темы

Темы Раздел Ответов Последний пост
Ошибка яндекса
Поисковые системы 2 14.04.2011 17:16
Ошибка 404
Web программирование 5 22.12.2010 08:18
Ошибка: Внутренняя ошибка Remote service dnsmgr return error. Code 100
Вопросы от новичков 0 18.10.2009 00:05

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры