DOMXPath::registerPhpFunctionNS

(PHP >= 8.4.0)

DOMXPath::registerPhpFunctionNSRegistra uma função PHP como função XPath com namespace

Descrição

public DOMXPath::registerPhpFunctionNS(string $namespaceURI, string $name, callable $callable): void

Este método permite usar uma função PHP como uma função XPath com namespace dentro de expressões XPath.

Parâmetros

namespaceURI
O URI do namespace.
name
O nome da função local dentro do namespace.
callable
A função PHP a ser chamada quando a função XPath é chamada dentro da expressão XPath. Quando uma lista de nós é passada como parâmetro para a função de retorno, eles são arrays contendo os nós DOM correspondentes.

Erros/Exceções

  • Lança uma exceção ValueError se um nome de chamada de retorno não for válido.
  • Lança uma exceção ValueError se options contiver uma opção inválida.
  • Lança uma exceção ValueError s overrideEncoding for uma codificação desconhecida.
  • Lança uma exceção TypeError se uma função de retorno informada não for chamável.

Valor Retornado

Nenhum valor é retornado.

Exemplos

Exemplo #1 Registra uma função XPath com namespace e a chama a partir da expressão XPath

<?php

$xml
= <<<EOB
<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>
EOB;

$doc = new DOMDocument();
$doc->loadXML($xml);

$xpath = new DOMXPath($doc);

// Registra o namespace my: (obrigatório)
$xpath->registerNamespace("my", "urn:my.ns");

// Registra função PHP
$xpath->registerPhpFunctionNS(
'urn:my.ns',
'substring',
fn (array
$arg1, int $start, int $length) => substr($arg1[0]->textContent, $start, $length)
);

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

echo
"Encontrados {$nodes->length} livros iniciando com 'PHP':\n";
foreach (
$nodes as $node) {
$title = $node->getElementsByTagName("title")->item(0)->nodeValue;
$author = $node->getElementsByTagName("author")->item(0)->nodeValue;
echo
"$title por $author\n";
}

?>

O exemplo acima produzirá algo semelhante a:

Encontrados 2 livros iniciando com 'PHP':
PHP Basics por Jim Smith
PHP Secrets por Jenny Smythe

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês)

Não há notas de usuários para esta página.
To Top