Heim  >  Artikel  >  Backend-Entwicklung  >  Bezüglich des Parameterübergabeproblems der PHP-Rückruffunktion preg_replace_callback

Bezüglich des Parameterübergabeproblems der PHP-Rückruffunktion preg_replace_callback

藏色散人
藏色散人nach vorne
2020-12-10 15:00:194579Durchsuche

Empfohlen: „PHP-Video-Tutorial

preg_replace_callback

Die Funktion dieser Funktion besteht darin, eine reguläre Ausdruckssuche durchzuführen und einen Rückruf zum Ersetzen zu verwenden

preg_replace_callback ( mixed $pattern , callable $callback , mixed $subject [, int $limit = -1 [, int &$count ]] ) : mixed

Parameter. Beschreibung

  • Muster

An Suche Das Muster, das eine Zeichenfolge oder ein Array von Zeichenfolgen sein kann.

  • Rückruf

Eine Rückruffunktion, die jedes Mal aufgerufen wird, wenn eine Ersetzung erforderlich ist. Die von der Funktion beim Aufruf erhaltenen Parameter sind die mit dem Betreff abgeglichenen Ergebnisse. Die Callback-Funktion gibt die Zeichenfolge zurück, die tatsächlich an der Ersetzung beteiligt ist. Dies ist die Signatur der Callback-Funktion:

  • handler ( array $matches ) : string

Oft wird die Callback-Funktion benötigt und nur an einer Stelle namens preg_replace_callback() verwendet. In diesem Fall können Sie die anonyme Funktion verwenden, um eine anonyme Funktion als Rückruf zu definieren, wenn preg_replace_callback() aufgerufen wird. Auf diese Weise behalten Sie alle Aufrufinformationen am selben Ort und verunreinigen den Funktionsnamensraum nicht mit einem Rückruffunktionsnamen, der nirgendwo anders verwendet wird.

Beispiel Nr. 1 preg_replace_callback() und anonyme Funktion

<?php
/* 一个unix样式的命令行过滤器,用于将段落开始部分的大写字母转换为小写。 */
$fp = fopen("php://stdin", "r") or die("can&#39;t read stdin");
while (!feof($fp)) {
    $line = fgets($fp);
    $line = preg_replace_callback(
        &#39;|<p>\s*\w|&#39;,
        function ($matches) {
            return strtolower($matches[0]);
        },
        $line
    );
    echo $line;
}
fclose($fp);
?>
  • subject

Der Zielstring oder das String-Array zum Suchen und Ersetzen.

  • Limit

Die maximale Anzahl von Ersetzungen, die für jede Betreffzeichenfolge pro Muster verwendet werden können. Der Standardwert ist -1 (keine Begrenzung).

  • count

Wenn angegeben, wird diese Variable mit der Anzahl der durchgeführten Ersetzungen gefüllt.

So übergeben Sie Parameter

Standardmäßig erhält diese Rückruffunktion nur den passenden Parameter $matches. Wenn wir mehr Parameter übergeben möchten, können wir die Kreisverkehrtaktik verwenden. Wir müssen lediglich auf die Parameter zugreifen können, die in der anonymen Funktion übergeben werden müssen. Wir haben also zwei Möglichkeiten.

1. Verwenden Sie globale Variablen

$param1 = "test";
preg_replace_callback($pregRule, function ($match) {
    global $param1;
    return $match[1] . $param1 . $match[3];
}

2. Verwenden Sie objektorientierte Ladeklassen

class Scrapy{
   private $param1 = "test";
   public function info(){
      preg_replace_callback($pregRule, function ($match) {
            return $match[1] . $this->param1 . $match[3];
        }
   }
}

Über die beiden oben genannten Methoden können wir die Parameter aufrufen, die wir in der Rückruffunktion übergeben möchten.

Zusammenfassung

Es gibt immer mehr Lösungen als Probleme. Wenn Sie auf ein Problem stoßen, das nicht gelöst werden kann, und Sie Ihre Denkweise ändern, haben Sie möglicherweise eine glänzende Zukunft.

Das obige ist der detaillierte Inhalt vonBezüglich des Parameterübergabeproblems der PHP-Rückruffunktion preg_replace_callback. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:80shihua.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen