2016-08-02 44 views
2

Ich habe ein Datum in diesem Format (aus einem bestimmten Skript extrahiert), auf das würde ich alle Leerzeichen entfernen mag:PHP: Ersetzen doppelte Leerzeichen nur zwischen Nicht-Leerzeichen

$date="Date:   Tue Aug 2 10:43" 

Ganz einfach, aber der Trick ist: vorher möchte ich eine "0" vor der "2" (oder jedem anderen 9. ersten Tag des Monats) hinzufügen, aber die "0" muss die zweite Lücke zwischen "Aug " und 2". Was ist der beste Weg, dies zu erreichen?

Beachten Sie, dass das Datum wird (natürlich) jeden Tag ändern, so können wir einfach nicht so etwas tun:

$date=str_replace("Aug 2","Aug 02",$date); 

Stattdessen denke ich, der beste Weg, etwas zu tun, wäre wie :

$date=str_replace("[x] [x]","[x] 0[x]",$date); 

[x] bedeutet: "Jedes nicht-Leerzeichen" (bitte für diese Annäherung mich entschuldigen!)

Antwort

1

Hm, vielleicht die Lösung?

+0

Vielleicht nicht die "netteste" Lösung, aber eigentlich die einfachste in meinen Code zu implementieren. Arbeitete wie beabsichtigt. Danke vielmals ! – Blackounet

3

Verwendung date() und strtotime() diese Mission zu tun

$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 
+0

Müssen die "netteste" Lösung von allen sein, aber in diesem speziellen Fall, Akremon Lösung passte mir gut, wie es für mich am einfachsten zu implementieren war. Vielen Dank für deine Hilfe trotzdem! – Blackounet

1

Wenn Sie Ihre Eingabedaten betrachten, scheint es, dass Ihr spezifisches Skript eine formatierte Ausgabe erzeugt - was bedeutet, dass es Leerzeichen mit Leerzeichen verwendet. Das bedeutet, dass die Länge des Strings immer gleich ist - unabhängig vom tatsächlichen Datum und der Uhrzeit. Wenn dies wahr ist, dann kann man einen sehr einfachen Code verwenden:

if($date{22} == ' ') $date{22} = '0'; // replace space with zero 
$date = preg_replace('/ +/', ' ', $date); // convert multiple spaces into single space 

Wenn jedoch spezifische Skript nicht formatiert produziert otput dann werden Sie etwas wenig anders verwenden, aber auch hier sehr einfach:

$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 
+0

Ich habe Lakremon Lösung verwendet, aber danke trotzdem für Ihren Kommentar und Ihre Zeit, ich hoffe, es wird in Zukunft Somedy helfen. – Blackounet