PHP preg_replace_callback_array() İşlevi
Örnek
Bir cümledeki her kelimede kaç harf veya rakam bulunduğunu gösterin:
<?php
function countLetters($matches) {
return $matches[0] . '[' .
strlen($matches[0]) . 'letter]';
}
function countDigits($matches) {
return $matches[0] . '[' . strlen($matches[0]) . 'digit]';
}
$input
= "There are 365 days in a year.";
$patterns = [
'/\b[a-z]+\b/i' =>
'countLetters',
'/\b[0-9]+\b/' => 'countDigits'
];
$result =
preg_replace_callback_array($patterns, $input);
echo $result;
?>
Tanım ve Kullanım
İşlev preg_replace_callback_array()
, bir dizi normal ifadenin eşleşmelerinin bir geri çağırma işlevinin dönüş değeriyle değiştirildiği bir dize veya dize dizisi döndürür.
Not: Her dize için işlev, kalıpları verildikleri sırayla değerlendirir. Dize üzerindeki ilk desenin değerlendirilmesinin sonucu, ikinci model için giriş dizesi olarak kullanılır ve bu böyle devam eder. Bu beklenmedik davranışlara yol açabilir.
Sözdizimi
preg_replace_callback_array(patterns, input, limit, count)
Parametre Değerleri
Parameter | Description |
---|---|
pattern | Required. An associative array which associates regular
expression patterns to callback functions. The callback functions have one parameter which is an array of matches.The first element in the array contains the match for the whole expression while the remaining elements have matches for each of the groups in the expression. |
input | Required. The string or array of strings in which replacements are being performed |
limit | Optional. Defaults to -1, meaning unlimited. Sets a limit to how many replacements can be done in each string |
count | Optional. After the function has executed, this variable will contain a number indicating how many replacements were performed |
Teknik detaylar
Geri dönüş değeri: | Değiştirmelerin giriş dizesine veya dizelerine uygulanmasından kaynaklanan bir dize veya dize dizisini döndürür |
---|---|
PHP Sürümü: | 7+ |
Daha fazla örnek
Örnek
Bu örnek, sırayla değerlendirilen modellerin potansiyel olarak beklenmeyen etkilerini gösterir. İlk olarak, countLetters değiştirme işlemi "days"e "[4letter]" ekler ve bu değiştirme gerçekleştirildikten sonra, countDigits değiştirme işlemi "4letter" içindeki "4"ü bulur ve buna "[1digit]" ekler:
<?php
function countLetters($matches) {
return $matches[0] . '[' .
strlen($matches[0]) . 'letter]';
}
function countDigits($matches) {
return $matches[0] . '[' . strlen($matches[0]) . 'digit]';
}
$input
= "365 days";
$patterns = [
'/[a-z]+/i' => 'countLetters',
'/[0-9]+/' => 'countDigits'
];
$result =
preg_replace_callback_array($patterns, $input);
echo $result;
?>
❮ PHP RegExp Referansı