PHP 7.4.22 Released!

preg_filter

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

preg_filterBir düzenli ifade arama ve değiştirmesi yapar

Açıklama

preg_filter(
    string|array $şablon,
    string|array $yenisi,
    string|array $konu,
    int $sınır = -1,
    int &$sayı = null
): string|array|null

preg_filter() sadece eşleşen (değiştirilmiş olması olası) konuları döndürmesi dışında preg_replace() işlevi gibidir. Bu işlevin nasıl çalıştığıyla ilgili ayrıntılı bilgi için preg_replace() sayfasına bakılabilir

Dönen Değerler

konu değiştirgesi bir dizi ise bir dizi döndürür aksi takdirde bir dizge döner.

konu değiştirgesi bir dizi ise ve hiç eşleşme olmazsa veya bir hata oluşmuşsa boş bir dizi döner; aksi takdirde null döner.

Örnekler

Örnek 1 - preg_filter() ile preg_replace() işlevini karşılaştırma örneği

<?php
$subject 
= array('1''a''2''b''3''A''B''4');
$pattern = array('/\d/''/[a-z]/''/[1a]/');
$replace = array('A:$0''B:$0''C:$0');

echo 
"preg_filter işlevinin sonucu:\n";
print_r(preg_filter($pattern$replace$subject));

echo 
"preg_replace  işlevinin sonucu:\n";
print_r(preg_replace($pattern$replace$subject));
?>

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

preg_filter işlevinin sonucu:
Array
(
    [0] => A:C:1
    [1] => B:C:a
    [2] => A:2
    [3] => B:b
    [4] => A:3
    [7] => A:4
)
preg_replace işlevinin sonucu:
Array
(
    [0] => A:C:1
    [1] => B:C:a
    [2] => A:2
    [3] => B:b
    [4] => A:3
    [5] => A
    [6] => B
    [7] => A:4
)

Ayrıca Bakınız

add a note add a note

User Contributed Notes 6 notes

up
9
forsoap at gmail dot com
4 years ago
For those who read manual not in English and figure out that example code returns not the same result as in documentation

You need put in example patter modifier "u" to get same result:

<?php
$subject
= array('1', 'а', '2', 'б', '3', 'А', 'Б', '4');
// Added "u"
$pattern = array('/\d/u', '/[а-я]/u', '/[1а]/u');
$replace = array('А:$0', 'Б:$0', 'В:$0');
?>
up
5
bienvenunet at yahoo dot com
3 years ago
If you don't want to actually replace the matches, just filter the array to them, make the replacement parameter '$0'.

<?php
$subject
= array('1', 'a', '2', 'b', '3', 'A', 'B', '4');
$result = preg_filter('/\d/', '$0', $subject);  // ['1','2','3','4']
?>
up
0
sajina_99 at hotmail dot de
9 years ago
As I had to work with PHP5.2.X and needed preg_filter I wrote a quick and dirty workaround.

<?php
 
if (!function_exists('preg_filter')) {
 
    function
preg_filter($pattern, $replace, $subject, $limit = -1 , &$count = null) {
   
      if(!
is_array($subject)) {
       
$noArray = 1 ;
       
$subject = array($subject);
      }

     
$preg = preg_replace($pattern, $replace, $subject, $limit,  &$count);

     
$diff = array_diff($preg, $subject);
     
      if(
$noArray == 1) $diff = implode($diff) ;

      return
$diff ;
     
    }
   
  }
?>
up
-24
MrBertie
10 years ago
Another way to filter an array, and simply return the matching items: preg_grep!
up
-23
fgmhhfg at gmail dot com
7 years ago
As for the php 5.5.3 version, the example  turn out like:
Array
(
       [0] => A:1
       [1] => B:a
       ...
)
up
-35
Anonymous
7 years ago
As for the php 5.5.3 version, the example will turn out like:
Array
(
       [0]=>A:1
       [1]=>B:a
       ...
)
To Top