CakeFest 2024: The Official CakePHP Conference

DOMXPath::registerPhpFunctions

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DOMXPath::registerPhpFunctionsRegistra funções PHP como funções XPath

Descrição

public DOMXPath::registerPhpFunctions(string|array|null $restrict = null): void

Este método permite o uso de funções PHP dentro de expressões XPath.

Parâmetros

restrict

Use este parâmetro para permitir apenas que certas funções sejam chamadas do XPath.

Este parâmetro pode ser uma string (um nome de função) ou um array de nomes de função.

Valor Retornado

Nenhum valor é retornado.

Exemplos

Os exemplos a seguir usam book.xml que contém o seguinte:

Exemplo #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>

Exemplo #2 DOMXPath::registerPHPFunctions() com php:functionString

<?php
$doc
= new DOMDocument;
$doc->load('book.xml');

$xpath = new DOMXPath($doc);

// Registra o namespace php: (obrigatório)
$xpath->registerNamespace("php", "http://php.net/xpath");

// Registra funções PHP (sem restrições)
$xpath->registerPHPFunctions();

// hama a função substr no título do livro
$nodes = $xpath->query('//book[php:functionString("substr", title, 0, 3) = "PHP"]');

echo
"Found {$nodes->length} books starting with 'PHP':\n";
foreach (
$nodes as $node) {
$title = $node->getElementsByTagName("title")->item(0)->nodeValue;
$author = $node->getElementsByTagName("author")->item(0)->nodeValue;
echo
"$title by $author\n";
}

?>

O exemplo acima produzirá algo semelhante a:

Found 2 books starting with 'PHP':
PHP Basics by Jim Smith
PHP Secrets by Jenny Smythe

Exemplo #3 DOMXPath::registerPHPFunctions() com php:function

<?php
$doc
= new DOMDocument;
$doc->load('book.xml');

$xpath = new DOMXPath($doc);

// Registra o namespace php: (obrigatório)
$xpath->registerNamespace("php", "http://php.net/xpath");

// Registra funções PHP (apenas has_multiple)
$xpath->registerPHPFunctions("has_multiple");

function
has_multiple($nodes) {
// Retorna true se mais de um autor
return count($nodes) > 1;
}
// Filtra livros com múltiplos autores
$books = $xpath->query('//book[php:function("has_multiple", author)]');

echo
"Books with multiple authors:\n";
foreach (
$books as $book) {
echo
$book->getElementsByTagName("title")->item(0)->nodeValue . "\n";
}

?>

O exemplo acima produzirá algo semelhante a:

Books with multiple authors:
PHP Basics

Veja Também

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top