preg_match_all mit verschiedenen Content variabeln
Stranger
- php
0 suit
Guten Abend,
ich bin dabei eine mehrseite Adressliste Liste zu grabben, die diverse Adressen enthält. Sowei so gut. Mit preg_match_all kann ich auch die einzelnen Adressen ganzheitlich unterscheiden.
Nun habe ich nur noch ein Problem.
Der Basistext kann nun wie folgend aussehen:
<div class="adressbox">
<strong>Beispielfirma</strong><br />
Beispiel GmbH<br />
Beispielstrasse 120<br />
44309 Dortmund</p>
<p class="phonetext">
Telefon: 0231-0000000<br />
Fax: 0231-0000000</p>
</div>
oder
<div class="adressbox">
<strong>Beispielfirma</strong><br />
Beispielstrasse 120<br />
44309 Dortmund</p>
<p class="phonetext">
Telefon: 0231-0000000<br />
Fax: 0231-0000000</p>
</div>
Wie man sehen kann gibt es einen wesentlichen Unterschied ein Feld fehlt.
Nun möchte ich natürlich die Daten strukturiert in eine Datenbank pulvern, sprich es gibt eine Tabelle Firma / Strasse / PLZ / Ort...
Das Problem ist nur das aufgrundes Fehlenden <br /> ich die Strasse nicht mehr sicher zuordnen kann, da sie auch ein Bestandteil des Unternehmensnamens sein kann.
Hier ein kurzer Quelltextauszug aus beschriebenen Grapper
preg_match_all("|<div class="adressbox">(.*)</div>|Uism",$data, $items, PREG_PATTERN_ORDER);
if (count($items[1])==0) {
preg_match_all("|<div class="adressbox">(.*)</div>|Uism",$data, $items, PREG_PATTERN_ORDER);
}
for ($i=0; $i<count($items[1]); $i++) {
preg_match_all("|adresstext(.*)linktext|Uism",$items[1][$i], $regs, PREG_PATTERN_ORDER);
$adressen= $regs[1][0];
$adressen= str_replace('</p><p class="phonetext">Telefon:', ',', $adressen);
$adressen= str_replace('<br />Fax:', ',', $adressen);
$adressen= str_replace('</strong><br />', ',', $adressen);
$adressen= str_replace('<strong>', '<anfang>', $adressen);
$adressen= str_replace('</p>', '<ende>', $adressen);
$adressen= str_replace('<p class="">', '', $adressen);
$adressen= str_replace('<p class="', '', $adressen);
$adressen= str_replace('">', '', $adressen);
$adressen= str_replace("\t", "", $adressen);
$adressen= str_replace("\n", "", $adressen);
$adressen= str_replace("<br />", ",", $adressen);
$adresse= explode(',', $adressen);
$firma= $adresse[0];
$adress= $adresse[1];
$plzort= $adresse[2];
$tel= $adresse[3];
$fax= $adresse[4];
Hat hierzu jemand eine Idee
Wie man sehen kann gibt es einen wesentlichen Unterschied ein Feld fehlt.
Ist die Datenstruktur vorgegeben?
Hat hierzu jemand eine Idee
Wenn die Struktur nicht vorgegeben ist, nutze ein maschinenlesbares Format und einen XML-Parser oder vergleichbares.