Adres zoeken in zin

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Menno

menno

19/09/2008 23:48:00
Quote Anchor link
Beste PHPers,

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
 
PHP hulp

PHP hulp

24/12/2024 15:15:54
 
Jan Koehoorn

Jan Koehoorn

20/09/2008 00:09:00
Quote Anchor link
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.
 
PHP Newbie

PHP Newbie

20/09/2008 00:44:00
Quote Anchor link
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.
 
Eddy E

Eddy E

20/09/2008 08:00:00
Quote Anchor link
Voorbeeld van zo'n zin:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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
*/



?>


Geeft toch netjes wat je wilt?
Gewijzigd op 01/01/1970 01:00:00 door Eddy E
 
Douwe

Douwe

20/09/2008 08:31:00
Quote Anchor link
Of maak een reguliere expressie:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>";
?>

Resultaat: http://labs.spiqr.nl/p2000-adres.php
 
Menno

menno

20/09/2008 20:35:00
Quote Anchor link
Maar ik krijg de tekst binnen via deze p2000 (ik gebruik file_get_contents() daarvoor)
p2000-online.net

Omdat ik van die ander p2000 website de tekst niet kan krijgen via file_get_contents().
 
Joren de Wit

Joren de Wit

20/09/2008 21:34:00
Quote Anchor link
Ook met een regex gaat dat niet makkelijk worden vrees ik. De eenvoudige reden is dat de meldingen lang niet altijd in hetzelfde formaat staan.

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
 
Menno

menno

21/09/2008 01:25:00
Quote Anchor link
Ja het adres is altijd in hoofdletters gegeven.
Maar sommige adressen hebben nog spatie's, cijfers en punten in de naam.
 

21/09/2008 01:35:00
Quote Anchor link
Kan je nog niks mee:
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
 
Eddy E

Eddy E

21/09/2008 08:45:00
Quote Anchor link
Het adres is toch altijd onderstreept?

@ 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).
 
Menno

menno

21/09/2008 12:11:00
Quote Anchor link
Het lukt wel als ik het via P2000-online.net doe, maar via die monitor.livep2000.nl niet
en daar staan ze juist onderstreept.
 
Joren de Wit

Joren de Wit

21/09/2008 12:26:00
Quote Anchor link
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...
 
Menno

menno

21/09/2008 16:31:00
Quote Anchor link
ik kan helemaal niets vinden hoor.
Ik heb zijn broncode helemaal doorgespit, maar ik kan niet vinden waar hij de tekst vandaan krijgt :S
 
Menno

menno

24/09/2008 13:22:00
Quote Anchor link
Niemand heeft een idee? :)
*bump*
 
Gerben Jacobs

Gerben Jacobs

24/09/2008 14:29:00
Quote Anchor link
Alarmeringen.nl heeft een RSS feed.

.. 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
 



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.