Loading:


preg_replace_callback
preg_replace_callback ( $pattern $callback , $subject [, int $limit [, int &$count ]] )

preg_replace_callback — Wykona wyszukiwania wyrażeń regularnych i zastąpi je za pomocą wywołani


Zachowanie tej funkcji jest niemal identyczny z preg_replace (), z wyjątkiem faktu, że zamiast zastąpienia parametru, należy określić callback .



Parametry

 

pattern

Wzorzec do wyszukania. Może być ciągiem znaków lub tablicą z łańcuchem znaków.

callback

Wywołanie, które zostanie wykonane i przejdzie tablicę dopasowanych elemenów  w temacie ciągu. Wywołanie powinno zwrócić ciąg.


Bedziesz musiał często wzwyzwać funkcję dla preg_replace_callback () tylko w jednym miejscu. W takim przypadku można użyć create_function () zadeklarować anonimową funkcję jako wywołanie preg_replace_callback().



Example #1 preg_replace_callback() and create_function()


<?php
/* a unix-style command line filter to convert uppercase
 * letters at the beginning of paragraphs to lowercase */
$fp fopen("php://stdin""r") or die("can't read stdin");
while (!
feof($fp)) {
    
$line fgets($fp);
    
$line preg_replace_callback(
        
'|<p>\s*\w|',
        
create_function(
            
// single quotes are essential here,
            // or alternative escape all $ as \$
            
'$matches',
            
'return strtolower($matches[0]);'
        
),
        
$line
    
);
    echo 
$line;
}
fclose($fp);
?>


subject

  ciąg znaków lub tablica z ciągami do wyszukania i zastąpienia.

limit
Maksymalna możliwa zastępstw dla każdego wzoru w odniesieniu do każdego przedmiotu ciągu. Domyślna wartość to -1 (bez ograniczeń).


count
Jeśli określony, zmienna ta zostanie wypełniona liczbą wykonanych zastępstw.



Zwracane wartości

preg_replace_callback ()  zwraca tablicę, jeżeli parametr $subject  jest tablicą, lub ciągiem.

 



Napisz Artyku³

Listing


//Example #2 preg_replace_callback() example

<?php
// ten tekst był użyty w 2002
// chcemy zmienić tą date na  2003
$text = "Prima Aprilis jest w dniu 04/01/2002\n";
$text.= "Ostatnie święta były w  12/24/2001\n";
// wywołanie funkcji
function next_year($matches)
{
  // jak zwykle: $matches[0] jest kompletnym dopasowaniem
  // $matches[1] dopasowanie dla pierwszego podwzorca
  //zamknięte w '(...)' i tak dalej
  return $matches[1].($matches[2]+1);
}
echo preg_replace_callback(
            "|(\d{2}/\d{2}/)(\d{4})|",
            "następny rok",
            $text);

?>

//Powyższy przykład wyświetli:

Prima Aprilis jest w dniu 04/01/2003
Ostatnie święta były w 12/24/2002


   

//Example #3 preg_replace_callback() użycie struktury do obsługi BB code

<?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;
?>
 




Dodano przez: igor
Ranga: Administrator serwisu Punktów: 28716
Komentarze użytkowników
    • Tre¶æ komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2020 v.1.5 | design: diviXdesign & rainbowcolors