Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Muuttujan vapaasti pilkkominen

Sivun loppuun

SysRq868 [10.04.2007 18:55:16]

#

Minulla on päivämäärä muodossa 200704101841 (eli 10. huhtikuuta 2007 kello 18:41). Explodella voisi pilkkoa sen, mutta kun ei ole mitään siellä välissä, millä pilkkoa. En todellakaan myöskään osaa hakea PHP:n manuskasta, kun en edes tiedä, mitä hakea.

Miten voisin saada tämän päivämäärän erikseen, niin että olisi esim. arrayssa nuo numerot?

Esim.

Array
(
    [0] => 2007
    [1] => 04
    [2] => 10
    [3] => 18
    [4] => 41
)

Kiitos.

Grez [10.04.2007 19:02:47]

#

Kannattaa vilkuilla sieltä manuskasta joko substr tai preg_match

Jälkimmäisellä tyyliin seuraavasti. Huono puolihan tossa on että arrayn ekaksi tulee tuo koko aika. Ja jollain modifierilla saisi määriteltyä että ei kelpaa kuin numerot, nythän sille riittää että merkkijonon pituus on 12 merkkiä.

<?php
	$aika='200704101907';
	if (0==preg_match('/^(....)(..)(..)(..)(..)$/',$aika,$matches))
		die('Epäkelpo aika');
	unset($matches[0]);
	print_r($matches);
?>

SysRq868 [10.04.2007 19:37:33]

#

Kiitän. Pelastit taas päiväni.

Opiskelija [10.04.2007 20:18:10]

#

Tai sitten

<?php
print_r(date_parse('200704101841'));
?>

miiro [10.04.2007 21:36:26]

#

date_parse on tosiaankin kätevä :)

SysRq868 [10.04.2007 21:53:56]

#

Tai sitten ei?

Grez [10.04.2007 21:56:09]

#

No jos on PHP 5.1.3 tai uudempi, niin mikä ettei.

SysRq868 [10.04.2007 21:57:45]

#

Itselläni on 5.1.4. ja tyhjä sivu date_parsan kanssa.

Grez [10.04.2007 22:02:59]

#

Niin, tulipas sanottua tyhmä kommentti kun en testiympäristön vanhalla PHP-tulkkiversiolla päässyt testaamaan. Eli tuohan ei tosiaan ole sopivassa muodossa strtotimelle eikä näin ollen myöskään date_parselle.

Opiskelija [10.04.2007 23:39:35]

#

Grez kirjoitti:

Niin, tulipas sanottua tyhmä kommentti kun en testiympäristön vanhalla PHP-tulkkiversiolla päässyt testaamaan. Eli tuohan ei tosiaan ole sopivassa muodossa strtotimelle eikä näin ollen myöskään date_parselle.

Hmmm....miksikäs ei? Itselläni on PHP 5.2.1 niin tuo koodinpätkä palauttaa

Array
(
    [year] => 2007
    [month] => 4
    [day] => 10
    [hour] => 18
    [minute] => 41
    [second] => 0
    [fraction] =>
    [warning_count] => 0
    [warnings] => Array
        (
        )

    [error_count] => 0
    [errors] => Array
        (
        )

    [is_localtime] =>
)

Siis toimii niinkuin pitää. Tosiaan vaatii aika uuden PHP:n.

SysRq868 kirjoitti:

Itselläni on 5.1.4. ja tyhjä sivu date_parsan kanssa.

Parsa on syötävää, joten koita date_parsen kanssa joskos sillä toimisi ;) Ainakin itselläni jos laitoin tuolle functiolle virheellisen syötteen niin errors kohdassa näkyi mikä vialla.

Grez [11.04.2007 00:03:25]

#

No kai tuo sitten riippuu monista tekijöistä mitä strtotime palauttaa eli mitä merkkijonoja se hyväksyy päivämääriksi.

Joka tapauksessa date_parse funktion dokumentaatio sanoo että parametri "Date in format accepted by strtotime()."

Kun annan omalle PHP-tulkilleni strtotime('200704101841') niin palautteena on -1. (Previous to PHP 5.1.0, this function would return -1 on failure)

Dokumentaatio sanoo "The function expects to be given a string containing a US English date format"
Eli mitään lupausta että tuollainen putkeen kirjoitettu numeromuoto kelpaisi ei ole tehty. Ilmeisesti joissakin järjestelmissä se toimii tuurilla.

Blaze [11.04.2007 00:11:47]

#

Uuemmassa PHP:ssa (5.2.1-pl3-gentoo) tosiaan toimii tuo strtotimekin tuolla numerosarjaparametrilla, joten date_parsen dokumentaatio on oikein--strtotimen toiminta vain on vaihtunut versioiden välillä :)

T.M. [11.04.2007 02:04:19]

#

Enpä kyllä noihin automaagisiin date_parse() funkkareihin kauheasti luottaisi.

Merri [11.04.2007 03:06:41]

#

$aika='200704101907';

$lopputulos = array(
	substr($aika, 0, 4),
	substr($aika, 4, 2),
	substr($aika, 6, 2),
	substr($aika, 8, 2),
	substr($aika, 10, 2)
);

Jostain syystä tämä on minusta paljon selkeämpää kuin regular expressionit.

Grez [11.04.2007 12:14:52]

#

Itsekin tekisin sen noilla substr:llä. Laitoin tuon preg_match -esimerkin postaukseeni vain sen takia, että kun tarjosin sekä substr että preg_matchin katsomista manuaalista. Ajattelin, että substr:llä toteutettuna tuo on itsestäänselvä, mutta preg_match voi jäädä hämäräksi ilman esimerkkiä.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta