2009-03-09 1 views
1

Ich habe ein PHP-Skript, das eine XML-Datei durchläuft, aber ich möchte in der Lage sein, das Objekt nach einem Wert zu durchsuchen, so wie ich ein Array nach einem Wert durchsuchen kann.Wie kann ich nach einem Wert in einem Objekt suchen?

Laut Kommentaren zu PHP.net unterstützt array_search() Objekte ab PHP5, aber ich kann es nicht zum Laufen bringen.

Die XML-Datei ist eine Liste für Bushaltestellen, und ich möchte in der Lage sein, das Objekt nach einer passenden Bushaltestelle zu durchsuchen.

Der aktuelle Code wie folgt aussieht, listet nur die Haltestellen:

$xml = new SimpleXMLElement(file_get_contents("StopPointList.xml")); 

foreach ($xml->StopPoint as $stop) 
{ 
    echo $stop->StopName.'<br />'; 
} 

Und als Referenz, die Bushaltestelle XML-Datei wie folgt aussieht:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<StopPointList NetworkVersion="20080828"> 
    <StopPoint> 
     <DISID>3012086:2</DISID> 
     <PositionNumber>2</PositionNumber> 
     <StopPointName>2</StopPointName> 
     <StopName>Sinsenveien</StopName> 
    </StopPoint> 
    <StopPoint> 
     <DISID>2160364:2</DISID> 
     <PositionNumber>2</PositionNumber> 
     <StopPointName>2</StopPointName> 
     <StopName>Rogneskjær</StopName> 
    </StopPoint> 
</StopPointList> 

Ich möchte in der Lage Sie sein eine MySQL-ähnliche Suche wie diese:% search%

Wie kann ich das tun?

Antwort

2

Ich würde sagen, das ist, was XPath (the spec/a tutorial) gemacht wurde.

Zum Beispiel: Um alle Haltepunkte mit einem Namen zu finden, die "Sinsen" enthält, würde dies der XPath-Ausdruck zu verwenden:

 
//StopPoint[contains(StopName, 'Sinsen')] 

In PHP können Sie SimpleXML (SimpleXMLElement::xpath) verwenden, es zu tun.

+0

Das scheint zu funktionieren! Vielen Dank! Aber ich habe eine andere Frage. Wie führe ich die Suche ohne Berücksichtigung der Groß-/Kleinschreibung durch? :) –

+0

Dies ist ein exzellentes Material für Ihre nächste Stack Overflow Frage. :-) – Tomalak

+0

Oh, und vergiss nicht zu erwähnen, dass du eine Lösung willst, die für nicht-englische Alphabete funktioniert. – Tomalak

Verwandte Themen