DOMXPath::registerPhpFunctions
(PHP 5 >= 5.3.0)
DOMXPath::registerPhpFunctions — Регистрация функций PHP как XPath функций
Описание
public void DOMXPath::registerPhpFunctions ([ mixed $restrict ] )Этот метод включает возможность использовать PHP функции в XPath выражениях.
Список параметров
restrict
- Используйте этот аргумент для включения возможности вызывать из XPath выражений только определенные функции.Этот аргумент может иметь тип string (имя функции) или array (массив имен функций).
Возвращаемые значения
Эта функция не возвращает значения после выполнения.
Примеры
Дальнейшие примеры используют файл book.xml, содержимое которого следующее:
Пример #1 book.xml
<?xml version="1.0" encoding="UTF-8"?> <books> <book> <title>PHP Basics</title> <author>Jim Smith</author> <author>Jane Smith</author> </book> <book> <title>PHP Secrets</title> <author>Jenny Smythe</author> </book> <book> <title>XML basics</title> <author>Joe Black</author> </book> </books>
Пример #2 DOMXPath::registerPHPFunctions() с php:functionString
$doc = new DOMDocument;
$doc->load('book.xml');
$xpath = new DOMXPath($doc);
// Регистрация PHP: пространство имен (необходимо)
$xpath->registerNamespace("php", "http://php.net/xpath");
// Регистрация PHP функций (без ограничений)
$xpath->registerPHPFunctions();
// Вызов функции substr применительно к названию книги
$nodes = $xpath->query('//book[php:functionString("substr", title, 0, 3) = "PHP"]');
echo "Найдены книги {$nodes->length} начинающиеся со слова 'PHP':\n";
foreach ($nodes as $node) {
$title = $node->getElementsByTagName("title")->item(0)->nodeValue;
$author = $node->getElementsByTagName("author")->item(0)->nodeValue;
echo "$title автора $author\n";
}
Результатом выполнения данного примера будет что-то подобное:
Найдены книги (2) начинающиеся со слова 'PHP':
PHP Basics автора Jim Smith
PHP Secrets автора Jenny Smythe
Пример #3 DOMXPath::registerPHPFunctions() с php:function
$doc = new DOMDocument;
$doc->load('book.xml');
$xpath = new DOMXPath($doc);
// Регистрация PHP: пространство имен (необходимо)
$xpath->registerNamespace("php", "http://php.net/xpath");
// регистрация PHP функций (только has_multiple)
$xpath->registerPHPFunctions("has_multiple");
function has_multiple($nodes) {
// возвращает true, если более одного автора
return count($nodes) > 1;
}
// Отбор книг с двумя и более авторами
$books = $xpath->query('//book[php:function("has_multiple", author)]');
echo "Книги с двумя и более авторами:\n";
foreach ($books as $book) {
echo $book->getElementsByTagName("title")->item(0)->nodeValue . "\n";
}
Результатом выполнения данного примера будет что-то подобное:
Книги с двумя и более авторами:
PHP BasicsСмотрите также
- DOMXPath::registerNamespace() - Ассоциирует пространство имен с объектом DOMXPath
- DOMXPath::query() - Выполняет заданное XPath выражение
- DOMXPath::evaluate() - Вычисляет переданное XPath выражение и возвращает типизированный результат, если возможно
User Contributed Notes
There are no user contributed notes for this page.
Описание класса domxpath, примеры использования класса domxpath.
Описание на ru2.php.netОписание на php.ru