Adres zoeken in zin
Ik ben momenteel bezig met een P2000 script.
Voorbeeld van een P2000 : http://monitor.livep2000.nl/
Nu wil ik uit elke melding precies het adres met huisnummer selecteren.
Nu ben ik door onderzoek bij regular-expressions beland.
Maar aangezien er heel veel mogelijkheden zijn waarop het adres wordt laten zien, heb ik besloten jullie hulp te vragen :)
Ik wil namelijk het adres een link geven naar google maps, dat kan ik wel, alleen het adres uit de melding halen is nog een probleem.
Kunnen jullie me helpen?
Alvast bedankt :)
Gewijzigd op 01/01/1970 01:00:00 door Menno
Een adres matchen met een regex zal lastig worden vrees ik. Zomaar een string met een nummer er achter is lang niet altijd een adres namelijk.
Maar wanneer je naar die pagina kijkt zie je wel dat de eerste onderstreepte tekst de straatnaam is. Het nummer achter de onderstreepte tekst is dus het huisnummer.
Code (php)
1
07:36:43 20-09-08 17 G AMBU A1 ONWEL <u>VAN DER LINDEN-AKKER</u> 2 2994BE BARENDRECHT brd bon 67697
Google-maps wil adres + plaatsnaam. Voor het gemak geef je gewoon het adres + huisnummer + postcode op. Dat is genoeg voor Google.
Eventuele mogelijkheid:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
// verkrijg string en variabelen
$string = "07:36:43 20-09-08 17 G AMBU A1 ONWEL <u>VAN DER LINDEN-AKKER</u> 2 2994BE BARENDRECHT brd bon 67697";
list($zooi, $string) = explode("<u>", $string);
list($straat, $string) = explode("</u>", $string);
list($huisnummer, $postcode, $zooi) = explode(" ", trim($string));
// maak variabelen netter
$straat = trim(ucfirst(strtolower($straat)));
$huisnummer = trim($huisnummer);
$postcode = trim($postcode);
// toon resultaat
echo "<pre>";
echo "Straat = $straat<br>Nummer = $huisnummer<br>postcode = $postcode";
echo "</pre>";
// Resultaat zal zijn:
/*
Straat = Van der linden-akker
Nummer = 2
postcode = 2994BE
*/
?>
// verkrijg string en variabelen
$string = "07:36:43 20-09-08 17 G AMBU A1 ONWEL <u>VAN DER LINDEN-AKKER</u> 2 2994BE BARENDRECHT brd bon 67697";
list($zooi, $string) = explode("<u>", $string);
list($straat, $string) = explode("</u>", $string);
list($huisnummer, $postcode, $zooi) = explode(" ", trim($string));
// maak variabelen netter
$straat = trim(ucfirst(strtolower($straat)));
$huisnummer = trim($huisnummer);
$postcode = trim($postcode);
// toon resultaat
echo "<pre>";
echo "Straat = $straat<br>Nummer = $huisnummer<br>postcode = $postcode";
echo "</pre>";
// Resultaat zal zijn:
/*
Straat = Van der linden-akker
Nummer = 2
postcode = 2994BE
*/
?>
Geeft toch netjes wat je wilt?
Gewijzigd op 01/01/1970 01:00:00 door Eddy E
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$sString = "07:36:43 20-09-08 17 G AMBU A1 ONWEL <u>VAN DER LINDEN-AKKER</u> 2 2994BE BARENDRECHT brd bon 67697";
preg_match("@\<u\>(?<straat>.+)\</u\>\ (?<huisnummer>[0-9a-z]+) (?<postcode>[0-9]{4}[a-z]{2})@i", $sString, $aMatches);
echo "<pre>";
print_r($aMatches);
echo "</pre>";
?>
$sString = "07:36:43 20-09-08 17 G AMBU A1 ONWEL <u>VAN DER LINDEN-AKKER</u> 2 2994BE BARENDRECHT brd bon 67697";
preg_match("@\<u\>(?<straat>.+)\</u\>\ (?<huisnummer>[0-9a-z]+) (?<postcode>[0-9]{4}[a-z]{2})@i", $sString, $aMatches);
echo "<pre>";
print_r($aMatches);
echo "</pre>";
?>
Resultaat: http://labs.spiqr.nl/p2000-adres.php
p2000-online.net
Omdat ik van die ander p2000 website de tekst niet kan krijgen via file_get_contents().
Zomaar een aantal meldingen:
- Prio 1 De Boog Buurtcentrum C. HUYGENSLAAN 2 WDN Buitenbrand 16545
- Prio 2 3E POELLAAN LSE Koe in de sloot GMK 66633
- Prio 1 LEIDSEVAART - N444 VHT Beknel. verkeer 66635 66591
- Prio 1 Buitenlocatie Willem vd Bergh ZANDHAVER 7 KWK Brandmelding OMS 66630
Zoals je ziet staat het adres niet op een vaste plaats in de melding, dus wordt het vrij lastig om daar een algemene regex voor te schrijven...
Je zou eventueel naar het gebruik van hoofdletters kunnen kijken, maar geen idee of het adres altijd in hoofdletters gegeven wordt.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Maar sommige adressen hebben nog spatie's, cijfers en punten in de naam.
21:28:56 20-09-08 1 I BRAN Pr 1 BUITENBRAND AFVAL ed KORENAKKER 24 TER APEL
of:
22:55:05 20-09-08 1 G BRAN HOI, DENK OM DE MIST EN OM DE PROMILLAGE!
En hier is het andersom:
19:37:12 20-09-08 1 G BRAN Pr 2 Buitenbrand / SPEELTOESTEL, kompas Valreep 65 GRONINGEN 748
@ Menno:
... daar zeg je inderdaad wat. Die tekst staat NIET in de broncode.
Dus probeer EERST even die tekst in te laden (of lukt dat wel) op jouw site (in een php-variabele).
P2000-online.net doe, maar via die monitor.livep2000.nl niet
en daar staan ze juist onderstreept.
Het lukt wel als ik het via en daar staan ze juist onderstreept.
Kijk maar eens naar de broncode van die pagina. Dan zul je zien dat ze waarschijnlijk iets van een iframe gebruiken waardoor je de broncode niet direct met file_get_contents() kunt uitlezen...
Ik heb zijn broncode helemaal doorgespit, maar ik kan niet vinden waar hij de tekst vandaan krijgt :S
*bump*
.. en, volgens mij kun je alles direct google maps in flikkeren. Deze is namelijk best slim van zichzelf. (maar dat is natuurlijk niet wat je wil.. Misschien een soort last resort.)
Edit:
Het begint altijd met A1, A2, B... en soms nog een 5-cijferige code. Dit kun je er dus al uitslopen.. Daarna krijg je meestal 't adres (soms ook ziekenhuisnaam ofzo)
Vervolgens kun je alle meldingen met 'vws' weggooien..
.. en dan ben je al een heel eind geloof ik.
Edit 2: Dat google maps veel aan kan heb ik nog ff getest, deze twee kan ie vinden
A1 SCHERPENZEELSEWEG - N802 X 3772ME BARNEVELD
A2 KAMILLELAAN X 6833GG ARNHEM
Dus A1 en A1, X en N802 heeft ie gewoon schijt aan. :)
Gewijzigd op 01/01/1970 01:00:00 door Gerben Jacobs