PHP / Wordpress:将标题中的UTC(?)日期更改为“人类”日期

时间:2015-05-14 16:06:45

标签: php mysql wordpress date

PHP / Wordpress:将标题中的UTC(?)日期更改为“人类”日期

我有大约10,000个Wordpress记录。

大约有10%的人在他们的标题中有日期,以我不熟悉的格式嵌入字符串(我认为它是UTC?)。我需要所有这些都是人类可读的格式“l,F js,Y”

例如

快速的棕色狐狸在2015-01-01T00:00:00跳过懒狗。

快速的棕色狐狸在2015年1月1日星期四跳过懒狗

(注意:我假设“T00:00:00”部分是时间。我不需要。

我所知道的:我知道我可以创建一个变量来改变这样的日期格式

$correctedDate = date($wordpressDateInTheTitle, "l, F js, Y")

我不知道的是如何提取&用$ correctionDate

替换每个标题的UTC日期

所以也许像

$wordpressTitle = get_the_title();
$badDate = <<extract the date from $wordpressTitle>>;
$correctedDate = date($badDate, "l, F js, Y");
$newTitle = "'.$wordpressTitle <<but replace the $badDate with $correctedDate>>.'"
$sql = "UPDATE wp_post SET 'title' = REPLACE ($wordpressTitle,$newTitle);"

如果有帮助,日期总是字符串的最后一部分(没有任何东西在日期之后),所以也许是从右到左的连接?

或许是一个查找和替换(php有这样的事情),其中任何以2015或2016开头的字符串被替换为$ correctedDate?

一只小手握住我,让我越过驼峰...?

2 个答案:

答案 0 :(得分:2)

就像RonaldPK所说,这可能适合你:

$title = "The quick brown fox jumped over the lazy dog on 2015-01-01T00:00:00";
$title = preg_replace_callback('/\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}$/', function($matches){
  return date("l, F j, Y", strtotime($matches[0]));
}, $title);
echo $title;

答案 1 :(得分:1)

特别针对此问题,如果您的日期严格采用此格式且始终是字符串的最后一部分,则可以通过使用space查找最后一次出现的strrpos来提取日期并将其剪切为结束:

$badDate = substr($wordpressTitle, strrpos($wordpressTitle, ' ')+1);

然后使用datestrtotime为$ badDate做任何你想做的事。

通常,即使您的日期并不总是字符串的最后一部分,您仍然可以使用正则表达式来搜索它们,就像RonaldPK建议的那样。