2016-07-21 54 views
1

我有串在PHP中的變量,如:PHP如何在某些位置添加多個字符串到另一個字符串

$datetime="20160105 1134"; 

我想調用一些簡單的功能在某些位置添加特定字符串。爲了得到

$datetime="2016-01-05 11:34"; 

我知道我可以用SUBSTR()和這樣做,但沒有任何簡單的解決方案,它只會告訴PHP把「 - 」在4和6位,並把「:」在位置11?我爲此寫了自己的函數,但是我問這是否可能更容易,例如。使用正則表達式左右。

// 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 

回答

0

OK這裏使用正則表達式

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

同樣

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

這就夠簡單了嗎?

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

這是非常優雅!但只適用於我的特定情況(日期)。我希望看到任何字符串的更一般的解決方案 –

0

試試這個method

$newstr = substr_replace($oldstr, $str_to_insert, $pos, 0); 
相關問題