Ben ik weer :-)

Ik heb een vraag over explode. Kan je op meerdere delimiters een explode uitvoeren?

BV:
===
ik heb een datum: 2008-10-17
om alleen de datum te krijgen doe ik:
<?
$strExpl = $row['datum'];
list ($Jaartal, $Maand, $Dag) = explode('-', $strExpl);
?>

dit geeft een goed resultaat. Nu wil ik echter een datum tijd splitsen.
Ik heb de volgende datum/tijd: 2008-10-17 21:25:00
Wanneer ik het volgende doe:
<? $strExpl = $row['Eind_datum'];
list ($Jaartal, $Maand, $Dag, $Uur, $Min) = explode('-', ' ', ':', $strExpl);
?>

krijg ik een melding dat ik teveel parameters gebruik. Ok de melding snap ik. Blijkbaar is explode niet zo gemaakt. Is er een manier dat ik wel op meerdere delimiters kan scheiden?
Ik zou strptime gebruiken. Denk die geeft een array terug met o.a. jaar, maand dag uur en minuut ;)
Zet een datum gewoon in een DATE(TIME) veld in de database, heb je al deze php kunsten niet nodig.
Dat is het al. Maar ik heb op een bepaald punt de "losse" onderdelen nodig.
Ik heb namelijk een functie (komt van deze site) waar je specifiek een jaar, dag, uur, min, sec

moet ingeven

<?
function countdown($jaar, $maand, $dag, $uur, $minuten)
{
$de_countdown_datum = mktime($uur, $minuten, 0, $maand, $dag, $jaar, -1);

$vandaag = time();

$verschil = $de_countdown_datum - $vandaag;
if ($verschil < 0) $verschil = 0;

$overblijvende_dagen = floor($verschil/60/60/24);
$overblijvende_uren = floor(($verschil - $overblijvende_dagen*60*60*24)/60/60);
$minutes_left = floor(($verschil - $overblijvende_dagen*60*60*24 - $overblijvende_uren*60*60)/60);

$taal = 'lang/inc.'.$_COOKIE["taal_pstdf"].'.php';
include($taal);


echo '<font size=-1> '.$overblijvende_dagen.' '.$countdwn_dgn.' '.$overblijvende_uren.' '.$countdwn_urn.' '.$minutes_left.' '.$countdwn_min.' '.$countdwn_msg.'</font>';
}
?>
@BAS


SELECT
   YEAR(datum) AS jaartal,
   MONTH(datum) AS maand,
   DAY(datum) AS dag,
   HOUR(datum) AS uur,
   MINUTE(datum) AS minuut
FROM
   tabel
....WHERE....enz.
Bas, waarom sla je de mktime niet over in de code en gebruik dan rechtstreeks je daumveld uit de database

<?
function countdown($datum)
{
$vandaag = time();

$verschil = $datum - $vandaag;
if ($verschil < 0) $verschil = 0;

$overblijvende_dagen = floor($verschil/60/60/24);
$overblijvende_uren = floor(($verschil - $overblijvende_dagen*60*60*24)/60/60);
$minutes_left = floor(($verschil - $overblijvende_dagen*60*60*24 - $overblijvende_uren*60*60)/60);

$taal = 'lang/inc.'.$_COOKIE["taal_pstdf"].'.php';
include($taal);


echo '<font size=-1> '.$overblijvende_dagen.' '.$countdwn_dgn.' '.$overblijvende_uren.' '.$countdwn_urn.' '.$minutes_left.' '.$countdwn_min.' '.$countdwn_msg.'</font>';
}
?>
@allen
Ik ga vanavond beide even proberen. Ik laat weten wat het is geworden.

IIG ---> Bedankt!!
@ Robert

Ik heb jou oplossing gebruikt.

Iedereen bedankt
Bedenk me net ff een andere oplossing, vervang je delimiter met str_replace, dus maak van een : een - :P
Aanvulling: je kunt een string ook exploden op een regex met [php]preg_split[/php]. Op die manier zou je meer dan 1 delimiter op kunnen geven.
Bas schreef op 20.10.2008 10:06
@ Robert

Ik heb jou oplossing gebruikt.

Iedereen bedankt


Dat is in dit geval wel de handigste oplossing, omdat het uit een database komt. In andere gevallen is de oplossing van Jan Koehoorn handiger, het houdt je code overzichtelijk.

Reageren