2016-12-02 54 views
1

我试图用“18:00”和“18:00/23:00”替换时间字符串,如:“18.00”或“18.00/23.00”。用preg_match替换时间字符串中的点

现在我做了什么,但它不工作,我认为这个

preg_replace("/\d{1,2}.\d{1,2}/","$1:$2","18.00/23.00"); 

回答

2

经历不添加捕获括号和逃生点:

echo preg_replace("/(\d{1,2})\.(\d{1,2})/","$1:$2","18.00/23.00"); 
        ^  ^^^ ^

PHP demo

$1$2backreferences,它指向用capturing groups捕获的内容。

0

可以使用str_replace代替

str_replace(".", ":",$your_date); 
+0

这可能会产生不必要的替代品。例如,如果您将字符串更改为'正常时见。 18.00/23.00'。用Wiktor的答案,它仍然可以工作,但对你而言,'.'会被转换为''正常时看到你:18:00/23:00' – Henders

+0

你是对的,但是你可以问一下像18.00这样的时间字符串,不过他不得不小心这个 – akabaka

+0

True,但带有(\ d {1,2})的正则表示它是专门针对1或2个数字后面的冒号。 – Henders