alternatief voor erer_replace

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Theo Huitema

Theo Huitema

11/06/2018 22:13:26
Quote Anchor link
Ik lees datums uit een gedcom bestand, maar die zijn in dd-MMM-yyyy waar bij MMM de letters van de maand zijn.
Nu wil ik graag dd-mm-jjjj, met maand in cijfers.

In mijn oude versie had ik per maand een regel om dit om te zetten, zie hier onder.
ereg_replace bestaat niet meer, maar is nu een handig alternatief?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
$Ggeboortedatum=  ereg_replace( "JAN", "-01-", $Ggeboortedatum );
$Ggeboortedatum=  ereg_replace( "FEB", "-02-", $Ggeboortedatum );
$Ggeboortedatum=  ereg_replace( "MAR", "-03-", $Ggeboortedatum );
$Ggeboortedatum=  ereg_replace( "APR", "-04-", $Ggeboortedatum );
$Ggeboortedatum=  ereg_replace( "MAY", "-05-", $Ggeboortedatum );
$Ggeboortedatum=  ereg_replace( "JUN", "-06-", $Ggeboortedatum );
$Ggeboortedatum=  ereg_replace( "JUL", "-07-", $Ggeboortedatum );
$Ggeboortedatum=  ereg_replace( "AUG", "-08-", $Ggeboortedatum );
$Ggeboortedatum=  ereg_replace( "SEP", "-09-", $Ggeboortedatum );
$Ggeboortedatum=  ereg_replace( "OCT", "-10-", $Ggeboortedatum );
$Ggeboortedatum=  ereg_replace( "NOV", "-11-", $Ggeboortedatum );
$Ggeboortedatum=  ereg_replace( "DEC", "-12-", $Ggeboortedatum );
$Ggeboortedatum=  ereg_replace( " ", "", $Ggeboortedatum);
 
PHP hulp

PHP hulp

20/04/2024 08:35:06
 
Rob Doemaarwat

Rob Doemaarwat

11/06/2018 22:20:13
Quote Anchor link
Daar heb je toch geen regex voor nodig?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
$Ggeboortedatum = strtr($Ggeboortedatum,[
  'JAN' => '01',
  'FEB' => '02',
  //enz
]);
 
- Ariën  -
Beheerder

- Ariën -

11/06/2018 22:33:15
Quote Anchor link
Normaal zou je dan in plaats van ereg_replace of eregi_replace de functie preg_replace gebruiken. Maar dat is gewoon een zware functie voor iets kleins als dit. Je kan beter inderdaad, net als Rob zegt, gewoon strtr gebruiken.

De genoemde functies die je dus niet nodig hebt, zijn vooral bedoeld voor reguliere expressies. Daar is in jouw voorbeeld geen enkele sprake van.
Gewijzigd op 11/06/2018 22:34:35 door - Ariën -
 
Theo Huitema

Theo Huitema

13/06/2018 14:40:02
Quote Anchor link
De uitvoer wordt nog niet mooi, komt denk ik door het formaat in het gedcom bestand.
Dit is bijvoorbeeld "1 OCT 1874" of "19 MAY 1904" of "ABT 8 MAR 1796"
Ik zou dit graag zien als "01-10-1874" of "19-05-1904" of "~08-03-1796"
Maar de cijfers en letter staan niet altijd op dezelfde plaats. Is dit eenvoudig te wijzigen?
 
- Ariën  -
Beheerder

- Ariën -

13/06/2018 14:52:41
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$date
= "1 OCT 1874"; // datum zoals jij die hebt
$timestamp = strtotime($date); // maak er een timestamp van
$formatted = strftime("%d-%m-%Y",$timestamp); // timestamp formatteren tot leesbare datum
echo $formatted; // en toon de datum
?>
 
Thomas van den Heuvel

Thomas van den Heuvel

13/06/2018 15:03:33
Quote Anchor link
pro tip: maak hier meteen yyyy-mm-dd van, zodat je hier makkelijk mee kunt sorteren en filteren. Je kunt een datum altijd nog mooi formatteren voor weergave.

De interne representatie zou je moeten helpen om je data te beheren. dd-mm-yyyy of wat voor (ander) formaat dan ook is daarvoor ongeschikt.
 
Theo Huitema

Theo Huitema

13/06/2018 15:22:50
Quote Anchor link
Dat is inderdaad mooie oplossing als de data er normaal in staat.
Het gedcom bestand wat ik inlaad vanuit een stamboom programma bevat echter ook ABT voor de datum, die herkent timestamp niet?
 
- Ariën  -
Beheerder

- Ariën -

13/06/2018 15:24:11
Quote Anchor link
Waar staat ABT dan voor?
 
Theo Huitema

Theo Huitema

13/06/2018 15:27:38
Quote Anchor link
ABT is engelse/amerikaanse afkorting van 'About' en betekent 'circa' of 'ongeveer'
Dus voor ABT voor een datum, betekent het ongeveer die datum, maar de exacte datum is niet bekend
 
Ivo P

Ivo P

13/06/2018 15:27:50
Quote Anchor link
"about" voor het geval bijvoorbeeld het geboortejaar niet exact bekend is. "rond 1710" bijvoorbeeld

http://wiki-en.genealogy.net/GEDCOM/DATE-Tag
 
Theo Huitema

Theo Huitema

13/06/2018 15:55:05
Quote Anchor link
Ik probeerde met str_replace ABT te vervangen door niets en dan de oplossing van Ariën, maar dat werkt niet

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
            
str_replace('ABT','',$Ggeboortedatum);
If($Ggeboortedatum !=''){$timestamp = strtotime($Ggeboortedatum);
$Ggeboortedatum = strftime("%d-%m-%Y",$timestamp);}
 
- Ariën  -
Beheerder

- Ariën -

13/06/2018 15:56:10
Quote Anchor link
Je slaat str_replace op regel 2 niet op voor verdere bewerking.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.