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?
一只小手握住我,让我越过驼峰...?
答案 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);
然后使用date
和strtotime
为$ badDate做任何你想做的事。
通常,即使您的日期并不总是字符串的最后一部分,您仍然可以使用正则表达式来搜索它们,就像RonaldPK建议的那样。