PHP如何在特定位置向另一个字符串添加多个字符串

PHP如何在特定位置向另一个字符串添加多个字符串,php,Php,我在变量中有PHP中的字符串,如: $datetime="20160105 1134"; 我想调用一些简单的函数来在某些位置添加某些字符串。得到 $datetime="2016-01-05 11:34"; 我知道我可以用substr()之类的工具来实现,但是有没有最简单的解决方案,可以告诉PHP在位置4和6处放“-”,在位置11处放“:”?我为此编写了自己的函数,但我想问的是,这是否更容易实现(例如,使用regex或其他) // my function function put($what,

我在变量中有PHP中的字符串,如:

$datetime="20160105 1134";
我想调用一些简单的函数来在某些位置添加某些字符串。得到

$datetime="2016-01-05 11:34";
我知道我可以用substr()之类的工具来实现,但是有没有最简单的解决方案,可以告诉PHP在位置4和6处放“-”,在位置11处放“:”?我为此编写了自己的函数,但我想问的是,这是否更容易实现(例如,使用regex或其他)

// my function
function put($what,$pos,$txt)
{
   if (!is_array($pos)) $pos=[$pos]; rsort($pos);
   foreach($pos as $p) $txt=substr($txt,0,$p).$what.substr($txt,$p);
   return $txt;
}

$datetime=put("-",[4,6],put(":",11,$datetime));
// result: 2016-01-05 11:34
这够简单吗

$datetime="20160105 1134";
$datetime = date('Y-m-d H:i:s',strtotime($datetime));
echo $datetime;
这够简单吗

$datetime="20160105 1134";
$datetime = date('Y-m-d H:i:s',strtotime($datetime));
echo $datetime;
试试这个

试试这个

好的,这里是使用正则表达式

$datetime="20160105 1134";
$datetime=preg_replace("{^(....)(..)(..)(...)}","\\1-\\2-\\3\\4:",$datetime);
同样地

$var="test string";
$var=preg_replace("^(....)(.)(......)","\\1-\\3",$var);
好的,这里是使用正则表达式

$datetime="20160105 1134";
$datetime=preg_replace("{^(....)(..)(..)(...)}","\\1-\\2-\\3\\4:",$datetime);
同样地

$var="test string";
$var=preg_replace("^(....)(.)(......)","\\1-\\3",$var);

这是非常优雅的!但只适用于我的特殊情况(日期)。我想看到更普遍的解决方案,任何字符串这是非常优雅的!但只适用于我的特殊情况(日期)。我希望看到任何字符串的更一般的解决方案