Поиск определенного элемента на основе атрибута

Я просматривал весь свой старый код и пытался его оптимизировать. Я недавно наткнулся на кое-что, что меня озадачило, - это попытка найти решение xpath для этого:

function findit($search) {
    $i=0;
    foreach($xml as $page) { //loop to find specific $element based on $attribute
       if($page['src']==$search) { return $i; }
       $i++;
    }
}

Необходимо вернуть $ i , чтобы его можно было использовать для ссылки на элемент в XML позже .

Похоже, это должно быть возможно, и я нашел несколько строк xpath, которые, похоже, должны работать, но не работают. Обычно они ссылаются на previous-children и подсчитывают их с помощью функции xpath () , но я больше не могу найти исходные источники и не знаю, как перевести это на PHP строка xpath.

Возможно ли это вообще? Или это лучше / быстрее / эффективнее, чем то, что у меня уже есть? Предложения / решения?

РЕДАКТИРОВАТЬ: для решения Танду

Пример моего XML-файла

<range>
    <page src="attribute1" />
    <page src="attribute2" />
    etc...
    <page src="attribut20" />
</range>

В моей текущей функции PHP $ i всегда возвращает 0 , но должен возвращать все, что позиция $ search находится по адресу. Отредактировано, поэтому больше не нужно преобразовывать simplexml.

function findit($search) {
    $dom=new DOMDocument('1.0');
    $dom->load($file);
    $xpath=new DOMXPath($dom);
    $i=$xpath->evaluate("count(/range/page[@src='$search']/preceding-sibling::*)");
    die($dom->saveXML());
}
5
задан mseancole 27 October 2011 в 15:09
поделиться