/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Split omkring et årstal
Fra : Arne Feldborg


Dato : 18-02-04 00:59


Jeg har et større antal (mange tusinde) ensartede strenge der bla
indeholder en dato. Strengen skal splittes op i samtlige enkeltdele og
det kan jeg stort set gøre med med explode() eller split(), men datoen
er ikke specifikt adskildt fra første led i stednavnet.

Datoen er altid i formatet dd mmm yyyy og jeg mener opsplitningen bør
ske på een af følgende to måder. Men jeg er bestemt ikke nogen ørn til
det der med RegExp, så vil gerne høre om der forslag til en bedre /
smartere måde at gøre det på.?

$text = 'Gender: Female Birth: 23 NOV 1842 Sankt Mikkel, Slagelse, Soro,
Denmark';

// forslag #2:
$res = preg_split ("/[0-9][0-9][0-9][0-9]+/", $text, -1,
PREG_SPLIT_OFFSET_CAPTURE);
echo '<p>'.substr($text, 0, $res[1][1]);
echo '<br>'.$res[1][0];

// forslag #2:
$res = split ('[0-9][0-9][0-9][0-9]', $text);
echo '<p>'.substr($text, 0, strlen($res[0])+5);
echo '<br>'.$res[1];




--
mvh, A:\Feldborg

Folketælllinger Hammerum og Bølling herreder, kirkebøger Hammerum herred
http://www.haunstrup.dk/feldborg/genealogi/download/

 
 
Nezar Nielsen (18-02-2004)
Kommentar
Fra : Nezar Nielsen


Dato : 18-02-04 10:48

Arne Feldborg wrote:

> $text = 'Gender: Female Birth: 23 NOV 1842 Sankt Mikkel, Slagelse, Soro,
> Denmark';

preg_match("/Birth: (\d{2}) (\w+) (\d{4})/", $text, $matches);

print "Personen er født: ".$matches[3].' '.$matches[2].' '.$matches[1]."\n";

--
Mvh. Nezar Nielsen
http://fez.dk

Arne Feldborg (18-02-2004)
Kommentar
Fra : Arne Feldborg


Dato : 18-02-04 11:46

Nezar Nielsen <tumpen@fez.dk> skrev Wed, 18 Feb 2004 10:47:36 +0100

>> $text = 'Gender: Female Birth: 23 NOV 1842 Sankt Mikkel, Slagelse, Soro,
>> Denmark';
>
>preg_match("/Birth: (\d{2}) (\w+) (\d{4})/", $text, $matches);
>
>print "Personen er født: ".$matches[3].' '.$matches[2].' '.$matches[1]."\n";
>
Tak for forslaget, det er jo en elegant måde at uddrage datoen på.
Men det løser desværre ikke det egentlige problem, nemlig at finde det
sted hvor datoen slutter og stednavnet begynder.

Eller sagt på en anden måde: Alt der kommer efter datoen skal jeg have
ind i en variabel (som jeg så efterfølgende kan arbejde videre med).



--
mvh, A:\Feldborg

Folketælllinger Hammerum og Bølling herreder, kirkebøger Hammerum herred
http://www.haunstrup.dk/feldborg/genealogi/download/

Thomas Lindgaard (18-02-2004)
Kommentar
Fra : Thomas Lindgaard


Dato : 18-02-04 12:50

On Wed, 18 Feb 2004 11:45:59 +0100, Arne Feldborg wrote:

>>> $text = 'Gender: Female Birth: 23 NOV 1842 Sankt Mikkel, Slagelse, Soro,
>>> Denmark';
>>
>>preg_match("/Birth: (\d{2}) (\w+) (\d{4})/", $text, $matches);
>>
>>print "Personen er født: ".$matches[3].' '.$matches[2].' '.$matches[1]."\n";
>>
> Tak for forslaget, det er jo en elegant måde at uddrage datoen på.
> Men det løser desværre ikke det egentlige problem, nemlig at finde det
> sted hvor datoen slutter og stednavnet begynder.
>
> Eller sagt på en anden måde: Alt der kommer efter datoen skal jeg have
> ind i en variabel (som jeg så efterfølgende kan arbejde videre med).

Udvid det regulære udtryk lidt:

preg_match("/Gender: (\w+) Birth: (\d{2}) (\w+) (\d{4}) ([\w ]+)/", $text,
$matches);
print_r($matches);

Nu skulle $matches gerne indholde:

$matches[1] = Female
$matches[2] = 23
$matches[3] = NOV
$matches[4] = 1842
$matches[5] = Sankt Mikkel, Slagelse, Soro, Denmark

.... det er dog ikke testet.

God fornøjelse
/Thomas

Arne Feldborg (19-02-2004)
Kommentar
Fra : Arne Feldborg


Dato : 19-02-04 01:12

Thomas Lindgaard <thomas@it-snedkeren.BLACK_HOLE.dk> skrev Wed, 18 Feb
2004 12:50:29 +0100


>Nu skulle $matches gerne indholde:
>
> $matches[1] = Female
> $matches[2] = 23
> $matches[3] = NOV
> $matches[4] = 1842
> $matches[5] = Sankt Mikkel, Slagelse, Soro, Denmark
>
>... det er dog ikke testet.
>
$matches[5] = Sankt Mikkel

Den skiller ved det næste komma. Men det ligger vist indenfor rammerne
af det jeg selv kan klare. Nu har jeg et fungerende eksempel jeg selv
kan eksperimentere videre med - og det var lige netop det jeg manglede.

Det viser sig nemlig at heller ikke alle datoer overholder formatet. Der
kan godt forekommen nogen der kun indeholder måned og årstal eller nogen
der indledes med et About. Og i nogle tilfælde er stednavnet kun i tre
led.

Så i alle tilfælde bliver jeg nødt til først at dele strengen op omkring
årstallet (der altid er det eneste firecfrede tal i hele strengen) og så
analysere de to halvdele hver for sig.

Mange tak for hjælpen til jer begge.


--
mvh, A:\Feldborg

Folketælllinger Hammerum og Bølling herreder, kirkebøger Hammerum herred
http://www.haunstrup.dk/feldborg/genealogi/download/

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408944
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste