Добро пожаловать на форум PHP программистов!
За последние 24 часа нас посетили 23987 программистов и 1287 роботов. Сейчас ищут 622 программиста ...
Приступая к работе

DOMXPath::registerPhpFunctions - Регистрация функций PHP как XPath функций

Вернуться к: DOMXPath

DOMXPath::registerPhpFunctions

(PHP 5 >= 5.3.0, PHP 7)

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

<?php
$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

<?php
$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 выражение и возвращает типизированный результат, если возможно



Вернуться к: DOMXPath

© 2024 «PHP.RU — Сообщество PHP-Программистов»
Главная | Форум | Реклама на сайте | Контакты VIP Сувениры
Разработка компании ODware