(PHP 4 >= 4.0.5, PHP 5, PHP 7, PHP 8)
preg_replace_callback — Geriçağırım işlevi kullanarak düzenli ifadeye göre dizgede değişiklik yapar
$şablon
,$geriçağırım
,$konu
,$sınır
= -1,&$sayı
= null
,$seçenekler
= 0yenisi
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.
ş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:
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.
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.
Düzenli ifade şablonu derlendiğinde geçerli bir düzenli ifade haline gelmezse bir E_WARNING
çıktılanır.
Sürüm: | Açıklama |
---|---|
7.4.0 | seçenekler bağımsız değişkeni eklendi. |
Ö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;
?>