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

PHP/Wordpress:将标题中的UTC(?)日期更改为;“人类”;日期,php,mysql,wordpress,date,Php,Mysql,Wordpress,Date,PHP/Wordpress:将标题中的UTC(?)日期更改为“人工”日期 我有大约10000张Wordpress记录 他们中大约有10%的人在标题中以字符串的形式嵌入日期,这种格式我不熟悉(我想是UTC?)。我需要它们都是人类可读的“l,F,js,Y”格式 比如说 这只敏捷的棕色狐狸在2015-01-01T00:00:00跳过了这只懒狗 到 2015年1月1日,星期四,这只敏捷的棕色狐狸跳过了这只懒狗 (注意:我假设“T00:00:00”部分是时间。我不需要它 我知道的是:我知道我可以创建一个变

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

我有大约10000张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")
我不知道如何从每个标题中提取UTC日期并将其替换为$correctedDate

所以可能是

$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);"
$wordpressTitle=获取标题();
$badDate=;
$correctedDate=日期($badDate,“l,F js,Y”);
$newTitle=“”。$wordpressTitle.”
$sql=“UPDATE wp_post SET'title'=REPLACE($wordpressttitle,$newTitle);”
如果有帮助的话,日期总是字符串的最后一部分(没有任何东西在日期之后),那么可能是从右到左的缩合

或者是一个find-and-replace(php有这样的功能吗),其中任何以2015或2016开头的字符串都被替换为$correctedDate


在这里握住一只小手让我渡过难关…?

特别针对这个问题,如果您的日期严格按照此格式,并且始终是字符串的最后一部分,您可以通过使用
strrpos
查找最后出现的
空格
来提取它,并将其剪切到末尾:

$badDate = substr($wordpressTitle, strrpos($wordpressTitle, ' ')+1);
然后使用
date
strotime
对$badDate执行任何操作


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

特别是对于这个问题,如果日期严格按照这种格式并且总是字符串的最后一部分,则可以使用
strrpos
并将其切割至末端:

$badDate = substr($wordpressTitle, strrpos($wordpressTitle, ' ')+1);
然后使用
date
strotime
对$badDate执行任何操作


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

特别是对于这个问题,如果日期严格按照这种格式并且总是字符串的最后一部分,则可以使用
strrpos
并将其切割至末端:

$badDate = substr($wordpressTitle, strrpos($wordpressTitle, ' ')+1);
然后使用
date
strotime
对$badDate执行任何操作


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

特别是对于这个问题,如果日期严格按照这种格式并且总是字符串的最后一部分,则可以使用
strrpos
并将其切割至末端:

$badDate = substr($wordpressTitle, strrpos($wordpressTitle, ' ')+1);
然后使用
date
strotime
对$badDate执行任何操作


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

正如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;

正如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;

正如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;

正如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;

因此,您所有的日期都是这种格式的
2015-01-01T00:00:00
?看起来您所有的日期都将具有完全相同的字符长度。您可以使用
substr
提取日期,
strotime
转换日期,最后使用
str\u replace
。尝试使用模式li使用
preg\u replace\u callback
ke
/(201[\d]-[\d]{2}-[\d]{2})(.+){9}$/
。在回调中,使用
date
strotime
设置日期格式。@tuananh是的,所有日期都采用该格式,因此所有日期都采用此格式
2015-01-01T00:00:00
?看起来所有日期的字符长度都完全相同。您可以使用
substr
提取日期,
strotime
来转换它,最后是
str_replace
。尝试使用
preg_replace_callback
这样的模式,如
/(201[\d]-[\d]{2}-[\d]{2}(.+){9}$/
。在回调中,使用
date
strotime
设置日期格式。@tuananh是的,所有日期都采用该格式,因此所有日期都采用此格式
2015-01-01T00:00:00
?看起来所有日期的字符长度都完全相同。您可以使用
substr
提取日期,
strotime
来转换它,最后是
str_replace
。尝试使用
preg_replace_callback
这样的模式,如
/(201[\d]-[\d]{2}-[\d]{2}(.+){9}$/
。在回调中,使用
date
strotime
设置日期格式。@tuananh是的,所有日期都采用该格式,因此所有日期都采用此格式
2015-01-01T00:00:00
?看起来所有日期的字符长度都完全相同。您可以使用
substr
提取日期,
strotime
转换它,最后
str\u replace
。尝试使用
preg\u replace\u callback
这样的模式,如
/(201[\d]-[\d]{2}-[\d]{2})(.+){9}$/
。在回调中,使用
date code>和
strotime
格式化日期。@tuananh