文字

DOMXPath::registerPhpFunctions

(PHP 5 >= 5.3.0, PHP 7)

DOMXPath::registerPhpFunctionsRegister PHP functions as XPath functions

说明

public void DOMXPath::registerPhpFunctions ([ mixed $restrict ] )

This method enables the ability to use PHP functions within XPath expressions.

参数

restrict

Use this parameter to only allow certain functions to be called from XPath.

This parameter can be either a string (a function name) or an array of function names.

返回值

没有返回值。

范例

The following examples use book.xml which contains the following:

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

Example #2 DOMXPath::registerPHPFunctions() with php:functionString

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

$xpath  = new  DOMXPath ( $doc );

// Register the php: namespace (required)
$xpath -> registerNamespace ( "php" "http://php.net/xpath" );

// Register PHP functions (no restrictions)
$xpath -> registerPHPFunctions ();

// Call substr function on the book title
$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" ;
}

?>

以上例程的输出类似于:

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

Example #3 DOMXPath::registerPHPFunctions() with php:function

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

$xpath  = new  DOMXPath ( $doc );

// Register the php: namespace (required)
$xpath -> registerNamespace ( "php" "http://php.net/xpath" );

// Register PHP functions (has_multiple only)
$xpath -> registerPHPFunctions ( "has_multiple" );
 
function 
has_multiple ( $nodes ) {
    
// Return true if more than one author
    
return  count ( $nodes ) >  1 ;
}
// Filter books with multiple authors
$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" ;
}

?>

以上例程的输出类似于:

Books with multiple authors:
PHP Basics

参见

  • DOMXPath::registerNamespace() - Registers the namespace with the DOMXPath object
  • DOMXPath::query() - Evaluates the given XPath expression
  • DOMXPath::evaluate() - Evaluates the given XPath expression and returns a typed result if possible
上一篇: 下一篇: