2009-03-09 6 views
1

У меня есть PHP-скрипт, который проходит через XML-файл, но я хочу, чтобы иметь возможность искать объект для значения, точно так же, как я могу найти массив для значения.Как я могу найти значение в объекте?

Согласно комментариям PHP.net, array_search() поддерживает объекты с PHP5, но я не могу заставить его работать.

XML-файл представляет собой список для остановок автобусов, и я хочу, чтобы иметь возможность искать объект после соответствующей остановки шины.

текущий код выглядит так, просто перечисляет остановки:

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

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

И для справки, XML-файл остановка автобуса выглядит следующим образом:

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

Я хотел бы быть в состоянии делать похожий на MySQL-поиск:% search%

Как это сделать?

ответ

2

Я бы сказал, что это то, что XPath (the spec/a tutorial) был сделан для.

Например: Для того, чтобы найти все точки останова с именем, которое содержит "Sinsen", это было бы выражение XPath для использования:

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

В PHP вы можете использовать SimpleXML (SimpleXMLElement::xpath), чтобы сделать это.

+0

Это похоже на работу! Благодаря! Но у меня есть другой вопрос. Как сделать запрос нечувствительным к регистру? :) –

+0

Это отличный материал для вашего следующего вопроса о переполнении стека. :-) – Tomalak

+0

О, и не забудьте упомянуть, что вы хотите решение, которое работает для неанглийских алфавитов. – Tomalak

Смежные вопросы