English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP Grundlagen教程

PHP fortgeschrittener教程

PHP & MySQL

PHP Referenzhandbuch

Verwendung und Beispiel der PHP-Funktion preg_replace_callback()

PHP 正则表达式(PCRE)

Die Funktion preg_replace_callback führt eine reguläre Ausdruckssearch durch und verwendet einen Callback für die Ersetzung.

Syntax

gemischt preg_replace_callback ( gemischt $pattern , aufrufbar $callback , gemischt $subject [, int $limit = -1 , int &$count ]] )

Das Verhalten dieser Funktion ist im Wesentlichen gleich wie preg_replace(), außer dass sie eine Callback-Funktion zur Berechnung des Ersatz-Strings angeben kann.

Parameterbeschreibung:

  • $pattern: Das zu suchende Muster, kann eine Zeichenkette oder ein Zeichenkettensatz sein.

  • $callback: Eine Callback-Funktion, die bei jedem Bedarf zur Ersetzung aufgerufen wird, wobei die Funktion die Übereinstimmung aus subject erhält.

  • $subject: Die zu suchende und zu ersetzende Zielzeichenkette oder Zeichenkettensatz.

  • $limit: Optional, die maximale Anzahl der Ersetzungen pro Muster für jede subject-Zeichenkette. Standard ist-1(-Unbegrenzt).

  • $count: Optional, die Anzahl der durchgeführten Ersetzungen.

Rückgabewert

Falls subject ein Array ist, gibt preg_replace_callback() ein Array zurück, andernfalls wird eine Zeichenkette zurückgegeben. Bei einem Fehler wird NULL zurückgegeben.

Falls eine Übereinstimmung gefunden wird, wird die ersetzte Zielzeichenkette (oder Zeichenkettensatz) zurückgegeben, andernfalls wird subject unverändert zurückgegeben.

Online-Beispiel

<?php
// Erhöhe das Jahr im Text um ein Jahr.
$text = "Aprilscherztag ist 04/01/2002\n";
$text .= "Letztes Weihnachten war 12/24/2001\n";
// Callback-Funktion
function next_year($matches)
{
  // Normalerweise: $matches[0] ist die vollständige Übereinstimmung
  // $matches[1] ist die Übereinstimmung des ersten KCapturing Groups
  // Fortsetzung folgt
  return $matches[1].($matches[2]+1);
}
echo preg_replace_callback(
            "|/(\d{2}/\d{2}/)(\d{4})|",
            "next_year",
            $text);
?>

Das Ausgaberesultat ist wie folgt dargestellt:

Aprilscherztag ist 04/01/2003
Letztes Weihnachten war 12/24/2002

PHP 正则表达式(PCRE)