preg_replace_callback

(PHP 4 >= 4.0.5, PHP 5, PHP 7, PHP 8)

preg_replace_callbackGeriçağırım işlevi kullanarak düzenli ifadeye göre dizgede değişiklik yapar

Açıklama

preg_replace_callback(
    string|array$şablon,
    callable$geriçağırım,
    string|array$konu,
    int$sınır = -1,
    int&$sayı = null,
    int$seçenekler = 0
): string|array|null

yenisi bağımsız değişkeninin yerini bir geriçağırım işlevinin alması dışında, davranış bakımından preg_replace() işlevine hemen hemen eşdeğerdir.

Bağımsız Değişkenler

şablon

Aranacak şablon. Tek bir dizge olabileceği gibi çok sayıda dizge içeren bir dizi de olabilir.

geriçağırım

konu dizgesiyle eşleşen elemanlardan oluşan bir dizi ile çağrılıp yer değiştirilecek dizgeleri içeren bir dizi döndüren bir geriçağırım işlevinin ismi. İşlevin sözdizimi:

işleyici(array$eşleşmeler): string

preg_replace_callback() için geriçağırım işlevine genellikle tek bir yerde ihtiyaç vardır. Bu durumda, preg_replace_callback() çağrısı içinde geriçağırım işlevini bildirmek için anonim bir işlev kullanılabilir. Böylece çağrı için gereken tüm bilgi tek bir yerde toplanmış olur ve bir daha başka bir yerde kullanılmayacak olan geriçağırım işlevi, işlev isim alanında kalabalık etmez.

Örnek 1 - preg_replace_callback() ve anonim işlev

<?php

$fp = fopen("php://stdin", "r") or die("std girdi okunamadı");
while (!
feof($fp)) {
$konu = fgets($fp);
$konu = preg_replace_callback(
'|<p>\s*\w|',
function (
$eşleşmeler) {
return
strtolower($eşleşmeler[0]);
},
);
echo
$konu;
}
fclose($fp);
?>
konu

Şablonun aranacağı yer değiştirmeye konu dizge veya dizi.

sınır

Her konu dizgesinde her şablon için olası azami yer değiştirme sayısı. -1 öntanımlıdır (sınırsız).

sayı

Belirtildiği takdirde yapılan yer değiştirmelerin sayısı bu bağımsız değişkene konur.

seçenekler

seçenekler bağımsız değişkeni, eşleşen dizinin biçimini açıklamak için PREG_OFFSET_CAPTURE ve PREG_UNMATCHED_AS_NULL seçeneklerini bir arada içerebilir. Ayrıntılar preg_match() işlevinde bulunabilir.

Dönen Değerler

konu bağımsız değişkeni bir dizi ise preg_replace_callback() de bir dizi döndürür aksi takdirde bir dizge döner. Hata durumunda daima null döner.

Eşleşmeler bulunduğu takdirde yeni konu döner, aksi takdirde bir hata oluşmamışsa konu değiştirilmeden döndürülür.

Hatalar/İstisnalar

Düzenli ifade şablonu derlendiğinde geçerli bir düzenli ifade haline gelmezse bir E_WARNING çıktılanır.

Sürüm Bilgisi

Sürüm: Açıklama
7.4.0seçenekler bağımsız değişkeni eklendi.

Örnekler

Örnek 2 - 1. preg_replace_callback() örneği

<?php
// Bu metindeki 2002'yi 2003 yapacağız
$metin = "Zafer Bayramı 30/08/2002 tarihinde olacak,\n";
$metin.= "Cumhuriyet bayramı ise 29/10/2001 tarihinde idi.\n";
// geriçağırım işlevi
function gelecek_sene($eşleşenler)
{
// normalde: $eşleşenler[0] eşleşmenin tamamını,

Yukarıdaki örneğin çıktısı:

Zafer Bayramı 30/08/2003 tarihinde olacak, Cumhuriyet bayramı ise 29/10/2002 tarihinde idi.

Örnek 3 - 2. preg_replace_callback() örneği

<?php
$input
= "plain [indent] deep [indent] deeper [/indent] deep [/indent] plain";

function
parseTagsRecursive($input)
{

$regex = '#\[indent]((?:[^[]|\[(?!/?indent])|(?R))+)\[/indent]#';

if (
is_array($input)) {
$input = '<div style="margin-left: 10px">'.$input[1].'</div>';
}

return
preg_replace_callback($regex, 'parseTagsRecursive', $input);
}

$output = parseTagsRecursive($input);

echo
$output;
?>

Ayrıca Bakınız

To Top