Изменение вывода wordpress wp_get_archives с помощью preg_replace

доброе утро, мальчики и девочки ... может кто-нибудь указать мне правильное направление, пожалуйста.

я хочу заменить свой php-echo-output JUNE 29, 2009–JULY 5, 2009 простым текстом: last week

<?php
ob_start();
wp_get_archives('type=weekly&limit=1');
$wklyarchives = ob_get_contents();
ob_end_clean();
$wklyarchives = preg_replace('%\&\#8211\;[a-zA-Z0-9, ]*\</a\>%s', 'last week</a>', $wklyarchives);
echo $wklyarchives;
?>

этот preg_replace заменяет только вторую часть, так что мой результат теперь JUNE 29, 2009last week этот preg сводит меня с ума...


person toul    schedule 07.07.2009    source источник


Ответы (2)


Вы сопоставляете только тире и часть после него, так что это именно то, что заменяется. Если вы добавите тот же класс символов перед тире, например

[a-zA-Z0-9, ]%\&\#8211\;[a-zA-Z0-9, ]

это должно работать (в зависимости от того, что содержит $wklyarchives еще до части «29 ИЮНЯ»; возможно, вам придется убедиться, что вы не слишком много).

person balpha    schedule 07.07.2009
comment
$wklyarchives = preg_replace('[a-zA-Z0-9, ]%\&\#8211\;[a-zA-Z0-9, ]*\‹/a\›%s', 'последняя неделя‹/ a›', $wklyarchives); спасибо за ваш ответ ... я не знаю, почему, но это не работает. - person toul; 07.07.2009
comment
Каково точное содержимое $wklyarchives до замены? - person balpha; 07.07.2009
comment
я получил этот вывод: 29 ИЮНЯ 2009 г. - 5 ИЮЛЯ 2009 г. - person toul; 07.07.2009
comment
Тире между 2009 и ИЮЛЕМ: это обычное тире, длинное тире, короткое тире, экранированное тире? Тот, который вы публикуете, является обычным тире, но из вашего регулярного выражения кажется, что это должно быть экранированное тире. - person balpha; 07.07.2009
comment
Тогда почему это: %\&\#8211\; в вашем регулярном выражении? - person balpha; 07.07.2009

Хорошо, попробовал это с WordPress, сработало нормально:

'/[a-z0-9,]+ [0-9,]+ [0-9]+.?[a-z0-9,]+ [0-9,]+ [0-9]+/iu'

Помните, что не используйте буферизацию вывода с wp_get_archives. Используйте эхо=0:

$wklyarchives = wp_get_archives("type=weekly&limit=1&echo=0");

Удачи.

person kovshenin    schedule 07.07.2009