PHP 8.2.28 Released!

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.

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.

Dönen Değerler

Hiçbir değer dönmez.

Hatalar/İstisnalar

  • Geri çağırım işlevinin adı geçersiz ise ValueError istisnası oluşur.
  • Throws a ValueError if options contains an invalid option.
  • Throws a ValueError if overrideEncoding is an unknown encoding.
  • Belirtilen .

Sürüm Bilgisi

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.

Ö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

Ö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";
}

?>

Ayrıca Bakınız

add a note

User Contributed Notes

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