FOK!forum / Digital Corner / [PHP] Script om data te herkennen
hello_moto1992dinsdag 18 oktober 2011 @ 12:27
Hallo,

ik zou graag een applicatie willen maken die gegevens automatisch in een database zet. Dan zou ik een invoerveld willen hebben die "26-11-2011 8:00 - 9:00 wiskunde" omzet in 4 variabelen, nl. datum, begintijd, eindtijd, onderwerp. Dit zou ik eigenlijk nog uitgebreider doen, maar dat is denk ik voor later ;) .

Mijn kennis van PHP is eerlijk gezegd vrij beperkt. Ik heb er ooit wel eens mee gewerkt, en ik weet wel hoe je die variabelen vervolgens in een database kan zetten en vervolgens uit kunt lezen. Het probleem zit er dus in dat een regel herkend moet worden.
Keiichidinsdag 18 oktober 2011 @ 12:28
Gebruik preg_split

:)
PiRANiAdinsdag 18 oktober 2011 @ 12:31
Je zult reguliere expressie moeten gaan schrijven om de data en tijden te herkennen. Tijd wordt bijvoorbeeld
1[0-9]{1,2}[:.][0-9]{2}u?
remi1986dinsdag 18 oktober 2011 @ 12:36
Wat eventueel nog kan als de strings steeds hetzelfde formaat hebben om te exploden op een whitespace ( " ").

1
2
3
4
5
6
7
$string = "26-11-2011 8:00 - 9:00 wiskunde";
$array = explode(" ", $string);

$datum = $array[0];
$begintijd = $array[1];
$eindtijd = $array[3];
$vak = $array[4];

EDIT: zag in het PHP topic al dat het variabel is. Mijn excuses, dit topic stond net nog boven PHP/MySQL

[ Bericht 7% gewijzigd door remi1986 op 18-10-2011 12:47:47 ]
PiRANiAdinsdag 18 oktober 2011 @ 13:01
24-uursklok waar de secondes optioneel zijn:
1^(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))?$

Data:
1^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$

Meer hier: http://regexlib.com/Displ(...)etectCookieSupport=1
Keiichidinsdag 18 oktober 2011 @ 13:19
quote:
3s.gif Op dinsdag 18 oktober 2011 13:01 schreef PiRANiA het volgende:
24-uursklok waar de secondes optioneel zijn:
[ code verwijderd ]

Data:
[ code verwijderd ]

Meer hier: http://regexlib.com/Displ(...)etectCookieSupport=1

Waarom heb ik nu het idee dat TS zich nu heel erg hard achter de oren krabt :P
hello_moto1992dinsdag 18 oktober 2011 @ 13:30
quote:
0s.gif Op dinsdag 18 oktober 2011 13:19 schreef Keiichi het volgende:

[..]

Waarom heb ik nu het idee dat TS zich nu heel erg hard achter de oren krabt :P
Dat klopt :@ . Hoe pas ik zulkiets toe?
#ANONIEMdinsdag 18 oktober 2011 @ 13:33
Je kan er vanuit gaan dat een tijdsindicatie vaak begint met " om {tijd} " of "op {datum} {tijd}" of "op {datum} om {tijd}". Dat zou je aanknopingspunt kunnen zijn.
Pakspuldinsdag 18 oktober 2011 @ 13:46
quote:
0s.gif Op dinsdag 18 oktober 2011 13:33 schreef Scorpie het volgende:
Je kan er vanuit gaan dat een tijdsindicatie vaak begint met " om {tijd} " of "op {datum} {tijd}" of "op {datum} om {tijd}". Dat zou je aanknopingspunt kunnen zijn.
Je zou een voorzetsel detectie kunnen invoeren om er achter te komen of er bepaalde woorden gekoppeld zijn aan de tijd. Zo kun je het woord tot gebruiken om aan te geven dat een afspraak een bepaalde tijd duurt.
Tijndinsdag 18 oktober 2011 @ 13:47
Waarom wil je per se alles in 1 invoerveld? Waarom maak je niet een aantal aparte invoervelden voor de datum en de tijd?
Pakspuldinsdag 18 oktober 2011 @ 13:51
quote:
5s.gif Op dinsdag 18 oktober 2011 13:47 schreef Tijn het volgende:
Waarom wil je per se alles in 1 invoerveld? Waarom maak je niet een aantal aparte invoervelden voor de datum en de tijd?
Hey, het gaat hier om de mogelijkheid. Hebben wij laatste niet een berg tijd gestoken om een pre-mutatie functie te schrijven waar we helemaal niks aan hebben, maar toch vet was om te schrijven :P

Toch lijkt me het wel vet om een functie te hebben die dit soort dingen allemaal kan detecteren :P
Mr.Houdoedinsdag 18 oktober 2011 @ 13:58
Op Rememberthemilk.com hebben ze zoiets met data, als je dan "volgende donderdag" intypt o.i.d. detecteert hij dat ook enzo :) Heel vet.
mstxdinsdag 18 oktober 2011 @ 14:00
quote:
0s.gif Op dinsdag 18 oktober 2011 13:58 schreef Mr.Houdoe het volgende:
Op Rememberthemilk.com hebben ze zoiets met data, als je dan "volgende donderdag" intypt o.i.d. detecteert hij dat ook enzo :) Heel vet.
Als dat los in 1 veld staat kun je dat heel makkelijk parsen met http://nl.php.net/strtotime (moet je het wel eerst vertalen).
Pakspuldinsdag 18 oktober 2011 @ 14:04
quote:
0s.gif Op dinsdag 18 oktober 2011 14:00 schreef mstx het volgende:

[..]

Als dat los in 1 veld staat kun je dat heel makkelijk parsen met http://nl.php.net/strtotime (moet je het wel eerst vertalen).
Volgens mij moet het te gebruiken zijn als onderdeel van. Bijvoorbeeld: Aankomende donderdag afspraak tandarts om 10:00.

Dit moet dan een afspraak worden om 10:00 op donderdag (nu 20-10-2011) met als titel 'Tandarts'.