PHP:更换双层空间只非空白字符
我在这个格式(从一个特定的脚本中提取)的日期,关于这一点我想删除所有空格之间:PHP:更换双层空间只非空白字符
$date="Date: Tue Aug 2 10:43"
很容易,但技巧是:在此之前,我想在“2”(或任何其他第9天的第9天)之前添加“0”,但“0”必须替换“Aug “和”2“。 达到此目的的最佳方法是什么?
记住日期将(显然)每天都会更改,所以我们不能简单地做这样的事情:
$date=str_replace("Aug 2","Aug 02",$date);
相反,我认为最好的办法是做这样的事情:
$date=str_replace("[x] [x]","[x] 0[x]",$date);
[X]意为: “任何非空白字符”(请原谅我这种近似!)
嗯,也许是解决方案?
$date=preg_replace("/(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d)(\s+)/","$1 0$2$3",$date);
我看到两种可能性:
- 使用正则表达式function.preg-replace.php
- 使用一个DateTime :: createFromFormat,然后使用日期时间::格式()datetime.createfromformat.php
使用date()
和strtotime()
做这个任务
$date = strtotime('Tue Aug 2 10:43'); //white spaces won't effect
echo date('D M 0\2 h:i',$date);
// output the date just replace the 2 with your 9th of month letter
必须是所有人的“最好的”解决方案,但在这种特殊情况下,Akremon解决方案非常适合我,因为这对我来说是最容易实现的。无论如何,非常感谢您的帮助! – Blackounet
看着你的输入数据,看起来你的特定脚本产生了一个格式化的输出 - 这意味着它使用填充空格。这意味着字符串的长度可能始终相同 - 无论其中的实际日期和时间如何。如果这是真的,那么你可以使用一个非常简单的代码:
if($date{22} == ' ') $date{22} = '0'; // replace space with zero
$date = preg_replace('/ +/', ' ', $date); // convert multiple spaces into single space
但是,如果你的具体的脚本不产生otput然后格式化你将不得不使用的东西有点不同,但同样很简单:
$date = preg_replace('/ +/', ' ', $date); // convert multiple spaces into single space
$arr = explode(' ', $date); // split text into words by spaces
if($arr[3] < 10) $arr[3] = '0'.$arr[3];
$date = implode(' ', $arr); // combine words
我使用了Lakremon解决方案,但非常感谢您的评论和您的时间,希望它能在未来帮助阿迪。 – Blackounet
也许不是“最好的”解决方案,但实际上最简单的实现到我的代码。按照预期工作。非常感谢 ! – Blackounet