Array mit Inhalt suchen

kekskruemel

Angesehenes Mitglied
Hallo,

ich habe mehrere Dateien, welche ich einlese und in ihr steht in irgendeiner Zeile CODE [ "coordinates": xx.xxxx, yy,yyyyy, zzz ]


Leider ist die Zeile nicht immer gleich. Ich lese die Datei in ein Array ein und damit ist ja jede Zeile in einem Array -also $array[Zeilennummer].

Kann ich nun recht einfach die Zeilennummer rausbekommen, in der jeweils der obere Inhalt steht?
Sicherlich könnte ich in einer for Schleife so oft durchlaufen wie Zeilen da sind und mit einer if genau die Zeile anfangen in der
CODE Array[$i] == '[ "coordinates": ';
ist.
Aber dahinter folgen ja noch in jeder Datei andere Zahlen. Wie bekomme ich das dennoch hin? Und wie kodiere ich die Eckige Klammer und das " in der Abfrage? (" mit \ ?)

Vielen Dank
 
CODE $start = '[ "coordinates": ';
if (substr($Array[$i], 0, strlen($start)) == $start) {
}
 
Ich habe das nun versucht mal einzubauen. Leider klappt es nicht, die Längen- und Breitengrade werden nicht herausgeschnitten und als die entsprechenden Variablen in die DB geschrieben.

Es bleibt alles wie vorher ohne Fehlermeldung oder ähnliches.

CODE
<?php
include ('global.php');
$key = "ABQIAAAA6hN...";

$query = "SELECT * FROM tankstellen WHERE tank_id > 0 AND tank_id < 19000 AND tank_laenge=0 and tank_breite=0";
$sql = mysql_query($query) or die($error);
while( $erg = mysql_fetch_object($sql) )
{
$q = "".utf8_encode($erg->tank_adr).",+".utf8_encode($erg->tank_plz).",+".utf8_encode($erg->tank_stadt)."";
// Ermitteln der Koordinaten
$geo = file('http://maps.google.com/maps/geo?q='.rawurlencode($q).'&output=csv&key='.$k);
if($geo) {
for($i=0;$i<55;$i++)
{
$start = '"coordinates": [ ';
if (substr($geo[$i], 0, strlen($start)) == $start)
{
$array = substr($geo[$i], 0, strlen($start));
$array[1] = str_replace(' ','',$array[1]);
$array[1] = str_replace(']','',$array[1]);
$koordinatenarray = explode(',', $array[1]);
$breite = $koordinatenarray[1];
$laenge = $koordinatenarray[0];

$updatequery = "UPDATE tankstellen SET tank_laenge='".$laenge."', tank_breite='".$breite."' WHERE tank_id='".$erg->tank_id."' ";
$updatesql = mysql_query($updatequery) or die($error);

}
}
}
}?>


Die angegebene Datei, die Google Maps zurückgibt gibt z.B. folgenden Inhalt zurück, wobei nicht immer Koordinaten zurückgegeben werden und nicht immer in der selben Zeile. Die Zeile in der die Koordinaten stehen, sieht aber immer gleich aus.


CODE
{
"name": "Krefelder Str. 225 52070 Aachen",
"Status": {
"code": 200,
"request": "geocode"
},
"Placemark": [ {
"id": "p1",
"address": "Krefelder Straße 225, 52070 Aachen, Deutschland",
"AddressDetails": {
"Accuracy" : 8,
"Country" : {
"AdministrativeArea" : {
"AdministrativeAreaName" : "North Rhine-Westphalia",
"SubAdministrativeArea" : {
"Locality" : {
"DependentLocality" : {
"DependentLocalityName" : "Aachen",
"PostalCode" : {
"PostalCodeNumber" : "52070"
},
"Thoroughfare" : {
"ThoroughfareName" : "Krefelder Straße 225"
}
},
"LocalityName" : "Aachen"
},
"SubAdministrativeAreaName" : "Aachen"
}
},
"CountryName" : "Germany",
"CountryNameCode" : "DE"
}
},
"ExtendedData": {
"LatLonBox": {
"north": 50.8013676,
"south": 50.7950724,
"east": 6.1074376,
"west": 6.1011424
}
},
"Point": {
"coordinates": [ 6.1042900, 50.7982200, 0 ]
}
} ]
}

 
Da sind doch noch Leerzeichen davor:

QUOTE (kekskruemel @ Mo 13.09.2010, 14:14)
CODE      "coordinates": [ 6.1042900, 50.7982200, 0 ]



Sechs, wenn ich das richtig gezählt habe.

Die müßten beim Suchausdruck entsprechend mit angegeben werden.
 
also wenn ich die Leerzeichen davor setze in den Suchausdruck ändert das leider auch nichts. oder müssen die Leerzeichen als Unicode gesetzt werden?
 
Zurück
Oben