(PHP 5 >= 5.3.0, PHP 7, PHP 8)
DOMXPath::registerPhpFunctions — PHP işlevlerini XPath ifadelerinde kullanılabilir yapar
Bu yöntem PHP işlevlerinin XPath ifadelerinde kullanılabilme yeteneğini etkinleştirir.
sınırla
XPath ifadelerinde kullanmak üzere sadece belli işlevlere izin vermek için kullanılır.
Değer şunlardan biri olabilir: string türünde bir işlev adı, işlev adlarını içeren indisli bir dizi veya anahtarları işlev isimlerinden, ilişkili değerleri callable türünde değerlerden oluşan bir ilişkisel dizi.
Hiçbir değer dönmez.
options
contains an invalid option.
overrideEncoding
is an unknown encoding.
Sürüm: | Açıklama |
---|---|
8.4.0 | Geçersiz geri çağırım işlevi adları artık ValueError istisnası oluşturuyor. Geri çağırım işlevi callable türünde değilse artık TypeError istisnası oluşuyor. |
8.4.0 |
Geri çağırım işlevlerinin callable kısmı
sınırla değeri olarak bir ilişkisel diziye
belirtilebiliyor.
|
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
Örnek 4 - Geri çağırımlı DOMXPath::registerPhpFunctions()
<?php
$doc = new DOMDocument;
$doc->load('examples/book-simple.xml');
$xpath = new DOMXPath($doc);
// php: isim alanını tanıt (gerekli)
$xpath->registerNamespace("php", "http://php.net/xpath");
// PHP işlevlerini tanıt (yalnızca birden_fazla)
$xpath->registerPhpFunctions(["birden_fazla" => fn ($nodes) => 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";
}
?>