Поиск XML для данных через php - PullRequest
0 голосов
/ 28 марта 2012

Я пытаюсь найти данные в XML-файле, используя php.Я не пытаюсь получить значения определенных элементов, я бы использовал xpath, если бы захотел.

Это пример моего XML-файла:

<root>
<author>foo</author>
<date>bar</date>
</root>

Допустим, мой клиент хочетискать слова «потрясающий».Я хочу, чтобы все строки с символами «f», «b» и «a» возвращались.Таким образом, вывод будет:

Foo
bar

Имя автора может быть, например, Джеймсом Вестсайдом.

<author>James Westside</author>

А пользователь искал jam, он вернет James Westside

Надеюсь, мой вопрос понятен.

1 Ответ

1 голос
/ 28 марта 2012

Вы должны использовать класс PHP: s XMLReader. XMLReader действует как курсор, идущий вперед по потоку документов и останавливающийся на каждом узле в пути.

Примерно так:

$search_phrase = 'fab';

$xml = new XMLReader;
$xml->open('your-xml-file.xml');

while ($xml->read()) {
  $node = $xml->expand();

  /* Looping through all elements in the XML */

  /* Test if the current node is a text node: */
  if ($node->nodeType == XMLReader::TEXT) {

    /* Loop all letters in search_phrase */
    for ($i = 0; $i < strlen($search_phrase); $i++) {

      /* Test if the text in the text node is matching any letter i search_phrase: */
      if (strpos($node->nodeValue, substr($search_phrase, $i, 1)) !== false) {
        echo($node->nodeValue . "\n");
        break;
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...