PHP Conference Japan 2024

DOMXPath::registerPhpFunctions

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

DOMXPath::registerPhpFunctionsPHP işlevlerini XPath ifadelerinde kullanılabilir yapar

Açıklama

public DOMXPath::registerPhpFunctions(string|array|null $sınırla = null): void

Bu yöntem PHP işlevlerinin XPath ifadelerinde kullanılabilme yeteneğini etkinleştirir.

Bağımsız Değişkenler

sınırla

XPath ifadelerinde kullanmak üzere sadece belli işlevlere izin vermek için kullanılır.

Ya bir dizge (işlev ismi) ya da işlev isimlerini içeren bir dizi olabilir.

Dönen Değerler

Hiçbir değer dönmez.

Örnekler

Bu örneklerde aşağıda içeriği verlen book.xml dosyası kullanılmıştır:

Örnek 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>

Örnek 2 - DOMXPath::registerPHPFunctions() ve php:functionString kullanımı

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

$xpath = new DOMXPath($doc);

// php: isim alanını tanıt (gerekli)
$xpath->registerNamespace("php", "http://php.net/xpath");

// PHP işlevlerini tanıt (sınırlama yok)
$xpath->registerPHPFunctions();

// substr işlevini book/title üzerinde kullan
$nodes = $xpath->query('//book[php:functionString("substr", title, 0, 3) = "PHP"]');

echo
"'PHP' ile başlayan {$nodes->length} kitap bulundu:\n";
foreach (
$nodes as $node) {
$title = $node->getElementsByTagName("title")->item(0)->nodeValue;
$author = $node->getElementsByTagName("author")->item(0)->nodeValue;
echo
"$author tarafından yazılan '$title'\n";
}

?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

'PHP' ile başlayan 2 kitap bulundu:
Jim Smith tarafından yazılan 'PHP Basics'
Jenny Smythe tarafından yazılan 'PHP Secrets'

Örnek 3 - DOMXPath::registerPHPFunctions() ve php:function kullanımı

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

$xpath = new DOMXPath($doc);

// php: isim alanını tanıt (gerekli)
$xpath->registerNamespace("php", "http://php.net/xpath");

// PHP işlevlerini tanıt (sadece birden_fazla işlevi)
$xpath->registerPHPFunctions("birden_fazla");

function
birden_fazla($nodes) {
// Bir yazardan fazla varsa true dönsün
return count($nodes) > 1;
}
// Birden fazla yazarlı kitapları ayır
$books = $xpath->query('//book[php:function("birden_fazla", author)]');

echo
"Birden fazla yazarlı kitaplar:\n";
foreach (
$books as $book) {
echo
$book->getElementsByTagName("title")->item(0)->nodeValue . "\n";
}

?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

Birden fazla yazarlı kitaplar:
PHP Basics

Ayrıca Bakınız

add a note

User Contributed Notes

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