У меня есть XML-документ, полный "производителей":
<producer>
<name></name>
<owner></owner>
<address>
<civic></civic>
<mailing/>
<town></town>
<province></province>
<postal></postal>
<phone></phone>
<fax></fax>
<email></email>
<website/>
</address>
<products>
<product></product>
<product></product>
<product></product>
<product></product>
<product></product>
<product></product>
<product></product>
</products>
<exports>
<region></region>
<region></region>
<region></region>
<region>l'Amérique du Nord</region>
</exports>
</producer>
Например, я хочу найти фразу "l'Amérique du Nord", которая является одним из регионов для данного конкретного производителя:
$query = "l'Amérique du Nord";
$xml = simplexml_load_file("../business-directory/producers-fr-nb.xml");
$upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZÀÂÆÇÈÉÊËÎÏÔŒÙÛÜ";
$lower = "abcdefghijklmnopqrstuvwxyzàâæçèéêëîïôœùûü";
$nodes = $xml->xpath('//producers/producer[descendant::*[contains(translate(text(), "'.$upper.'", "'.$lower.'"), "'.$query.'")]]');
Это не сработало. Я решил, что проблема заключается в том, чтобы сохранить фразу «l'Amérique du Nord» в строке запроса $. Когда я повторяю запрос $, я получаю это: l'Amérique du Nord
Я использовал такие функции, как htmlspecialchars () и htmlentities (), чтобы попытаться закодировать é, но, похоже, ничего не работает. Есть идеи?
Спасибо!