2009-03-09 5 views
1

J'ai un script PHP qui passe par un fichier XML, mais je veux être capable de rechercher l'objet pour une valeur, tout comme je peux rechercher un tableau pour une valeur.Comment puis-je rechercher une valeur dans un objet?

Selon les commentaires sur PHP.net, array_search() supporte les objets de PHP5, mais je n'arrive pas à le faire fonctionner.

Le fichier XML est une liste d'arrêts de bus et je souhaite pouvoir effectuer une recherche dans l'objet après un arrêt de bus correspondant.

Le code actuel ressemble à ceci, répertorie seulement les arrêts:

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

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

Et pour référence, le fichier XML d'arrêt de bus ressemble à ceci:

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

Je voudrais être en mesure do une recherche de type MySQL comme ceci:% search%

Comment est-ce que je peux faire ceci?

Répondre

2

Je dirais que c'est ce que XPath (the spec/a tutorial) a été conçu.

Par exemple: Pour tous les points d'arrêt avec un nom qui contient "Sinsen", ce serait l'expression XPath à utiliser:

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

En PHP, vous pouvez utiliser SimpleXML (SimpleXMLElement::xpath) pour le faire.

+0

Cela semble fonctionner! Merci! Mais j'ai une autre question. Comment puis-je rendre la recherche insensible à la casse? :) –

+0

Ceci est un excellent matériel pour votre prochaine question Stack Overflow. :-) – Tomalak

+0

Oh, et n'oubliez pas de mentionner que vous voulez une solution qui fonctionne pour les alphabets non-anglais. – Tomalak

Questions connexes