2016-04-11 5 views
-6

ich habe eine Variable wie folgt aus:So verwenden Sie Funktion in PHP explodieren, ohne Trennzeichen

$variable = "0904201600000123"; 

Ich möchte die ersten 8 Stellen wie diese werden lassen:

2016-04-09 

versucht haben, diese zu verwenden, code:

<?php 
$name = "$variable; 
$explode = explode("", $name); 
echo $explode[0]; 
echo "-"; 
echo $explode[1]; 
echo "-"; 
echo $explode[2]; 
?> 

aber es funktioniert nicht.

Können Sie wissen, wo das Problem liegt?

Vielen Dank für Ihre Hilfe.

+0

wandeln Sie es in Datum zuerst um 'strtotime ('Y-m-d', $ Name)' ... dann explodieren mit '-' ... –

+0

' explode() 'erfordert ein Trennzeichen, um die Zeichenfolge zu zerlegen. Deine ursprüngliche Zeichenkette hat keinen Charakter, mit dem du sie auseinander brichst. Wenn Sie sicher sein können, dass Ihre Zeichenfolge immer 2 Zeichen für Tag und Monat und 4 Zeichen für das Jahr hat, sollten Sie sich 'substr()' ansehen. – ThrowBackDewd

+1

Sie haben dieselbe Frage schon zweimal gestellt: http: // stackoverflow.com/q/36539188/3933332, http://stackoverflow.com/q/36539109/3933332 – Rizier123

Antwort

0

Sie können eine Variable zugreifen, wie Sie ein Array zugreifen können, wenn Sie Echo waren:

$string = "test"; 
echo $string[0]; 

Es t Echo würde, und weiter.

Sie könnten die Zeichenfolge verketten und eine neue Variable machen wie:

$v = "0904201600000123"; 
$date = $v[0].$v[1].'-'.$v[2].$v[3].'-'.$v[4].$v[5].$v[6].$v[7]; 
echo $date; 

ich es auf meinem lokalen Rechner getestet und es funktionierte

Hinweis: Wenn Sie mit der Methode der verwendet werden soll explode Funktion wie ich sah Sie früher, könnten Sie die str_split Funktion verwenden, die stattdessen das Ergebnis ein Array machen wird.

+0

Ich habe gerade erkannt, dass er die 'explode'-Funktion haben wollte, aber es ist nicht möglich ohne ein Trennzeichen, also musst du es machen. – Jek

+0

'substr()' wäre sauberer IMHO –

+0

habe diesen Code ausprobiert und es funktioniert. Vielen Dank für Ihre Hilfe – Crystal

0

Substr() kann eine Zeichenfolge in Teilen brechen.

$FirtsPart = Substr($variable, 0, 8); 
$SecondPart = Substr($variable, 8, 8); 

$FirstPart = strtotime('Y-m-d', $FirstPart); 

$variable = $FirstPart . $SecondPart; 
+0

Vielen Dank für Ihre Hilfe – Crystal

0

$variable = "0904201600000123";

Hinweis: Das Datumsformat der Variablen nur knapp sein Ziel $ verstehen. Wenn es kein Standardformat, als String unter Berücksichtigung und trennen mit substr

Option 1

$date = substr($variable, 0, 2).'-'.substr($variable, 2, 2).'-'.substr($variable, 4, 4); 
echo $date; 

Option 2

$dd = substr($variable, 0, 2); 
$mm = substr($variable, 2, 2); 
$yy = substr($variable, 4, 4); 
$date = $dd.'-'.$mm.'-'.$yy; 
echo $date; 
+1

es funktioniert, danke für Ihre Hilfe – Crystal

0
$variable = "0904201600000123"; 

preg_match("/([0-9]){2}([0-9]){2}([0-9]){4}/", $variable, $datematches); 

$newdate = $datematches[3] . "-" . $datematches[2] . "-" . $datematches[1]; 

Die Chancen stehen gut ich habe mehr als wahrscheinlich massiv über kompliziert. Nicht getestet, sollte aber den Trick machen.

+0

Syntaxfehler, unerwartete '$ datematches' - 5. Zeile – Jek

+0

@ jek fixiert. Zeit nach einem Zitat vergessen –

+0

Yeah realisierte ich :) Danke – Jek

Verwandte Themen