Наша группа в телеграмм для обмена идеями, проектами, мыслями, людьми в сфере ИТ г.Ростова-на-Дону: @it_rostov

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

.

Популярное:


Содержание: