2010-08-10 17 views
25

Ho la seguente dichiarazione che ha lavorato bene prima di PHP 5.3 utilizzando il split function:Obsoleto: Function split() è obsoleto. Come riscrivere questa affermazione?

list($year, $month, $day, $hour, $min, $sec) = split('[: -]', $post_timestamp); 

Dopo l'aggiornamento a PHP 5.3, ottengo l'avvertimento Deprecato:

Deprecated: Function split() è deprecato .

Sto cercando di analizzare una stringa con formato simile:

2010-08-10 23:07:58

nelle sue parti componenti.

+0

correlati: [PHP alternative Spalato? (Maggio 2010)] (http://stackoverflow.com/q/2813241/367456) – hakre

risposta

59

Penso che vogliate preg_split.

list($year, $month, $day, $hour, $min, $sec) = preg_split('/[: -]/', $post_timestamp); 
+0

Grazie per aver reso tutto questo facile! – caroline

7
$dateTime = new DateTime('2010-08-10 23:07:58'); 

$year = $dateTime->format('Y'); 
$month = $dateTime->format('m'); 

si ottiene il trapano ... seconda, su ciò che si sta andando a che fare con esso, utilizzando oggetto DateTime potrebbe essere più conveniente rispetto all'utilizzo di sei variabili distinte.

4
var_dump(strptime($post_timestamp, '%Y-%m-%d %H:%M:%S')); 
+2

+1 Ho postato preg_split come risposta alla sostituzione per split, ma dovrei essere d'accordo sul fatto che se stai analizzando un timestamp, dovresti usare le funzioni progettate per questo con una corretta gestione, ecc. –

+0

@Brandon Horsley: l'unico strano La cosa di questa soluzione è che l'anno non è assoluto, ma gli anni dal 1900: -S quindi è necessaria la post-elaborazione :-( – zerkms

+0

@zerkms Bene, che usare il tipo "datetime" e non i timestamp Vedi la risposta di Mchl. – feeela

7

Basta provare a sostituire "split" con "esplodere" la versione più recente di PHP e MYSQL accettare "esplodere" al posto di "split"

+7

'explode' non può essere utilizzato in questo caso perché può essere utilizzato con un solo simbolo delimitatore. MySQL non è collegato a questa domanda. –