webForumDet fria alternativet

preg_replace, vill plocka bort en nolla ur ett datum

PHP

6 svar · 511 visningar · startad av aztek

Medlem sedan feb. 200277 inlägg
Frågan#1

Jag vill ändra ett datum från det vanliga 2003-08-28 till 2003-8-28, alltså plocka bort nollan i månaden om det finns en sådan. Jag har försök läsa hur det fungerar med t.ex preg_replace men jag e för kass för att fatta. Om det är någon som har ett svar vore jag mycket tacksam.

Medlem sedan mars 20007 896 inlägg
#2

Ful-variant, men torde vara snabbare än reguljära uttryck ( Som vad jag har erfarat och hört kan vara väldigt sega ):

function stripZero( $strDate ) {
     array_splice( $strDate, 5, -4 );
     return $strDate;
}

Eftersom att strängar är arrayer av tecken, borde man kunna göra så där. Är inte säker på att det fungerar, eftersom att jag inte kan testa det. Men du kan ju alltid testa själv annars. http://se.php.net/array_splice

Funktionen stripZero() kräver att datum-strängen alltid har formatet åååå-mm-dd för att fungera.

Medlem sedan feb. 200277 inlägg
#3

Tyvärr får jag det inte att fungera. Får felmeddelandet:
Warning: array_splice() [function.array-splice]: The first argument should be an array in *****.php on line 37

Någon annan som har en lösning?

Medlem sedan feb. 200277 inlägg
#4

Jag har tillfälligt gjort en riktigt ful kodning:

$delar = explode("-", date("Y-m-d"));
$delar[1] = str_replace('0',"",$delar[1]);
$datum = implode("-", $delar);
print $datum;
Medlem sedan aug. 20002 975 inlägg
#5

Ett regexp kan se ut så här:

$datum = preg_replace("/(\\d{4}-)0/", "$1", $datum);

Annars går det också att göra så här:

$datum = substr($datum, 0, 5).intval(substr($datum, 5, 2)).substr($datum, 7);

Men ska du ta bort nolla från dag också, så är det enklaste att göra så här:

$datum = str_replace("-0", "-", $datum);

EDIT:
Lite fel i regexpen. Glömde bort att forumet strippar backslash i regexpar (måste skriva dubbelt). Är fixat nu.

Medlem sedan feb. 200277 inlägg
#6

Tack för tipsen, ska kolla igenom dom senare. Bra mycket kortare än mitt ful skript :)

Medlem sedan aug. 20002 975 inlägg
#7

Notera ändringen i regexpen.

251 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)