推奨: "PHP ビデオ チュートリアル "
preg_replace_callback
この関数の機能は、正規表現検索を実行し、 callback Replace
preg_replace_callback ( mixed $pattern , callable $callback , mixed $subject [, int $limit = -1 [, int &$count ]] ) : mixed
パラメータの説明
pattern
検索対象のパターンは文字列または文字列配列です。
callback
置換が必要になるたびに呼び出されるコールバック関数。呼び出されたときに関数によって取得されるパラメータは、主題と結果。コールバック関数は、実際に置換に関与する文字列を返します。これはコールバック関数のシグネチャです:
handler ( array $matches ) : string
コールバック関数は多くの場合必要であり、 preg_replace_callback() ローカル呼び出しに使用されます。この場合、匿名関数を使用して、 preg_replace_callback() が呼び出されたときに匿名関数をコールバックとして定義できます。こうすることで、すべての呼び出し情報を同じ場所に保持し、他では使用されていないコールバック関数名で関数の名前空間を汚すことがなくなります。
例 #1 preg_replace_callback() と無名関数
<?php /* 一个unix样式的命令行过滤器,用于将段落开始部分的大写字母转换为小写。 */ $fp = fopen("php://stdin", "r") or die("can't read stdin"); while (!feof($fp)) { $line = fgets($fp); $line = preg_replace_callback( '|<p>\s*\w|', function ($matches) { return strtolower($matches[0]); }, $line ); echo $line; } fclose($fp); ?>
subject
検索対象の文字列または文字そして文字列配列を置き換えました。
limit
パターンごとの各件名文字列に使用できる置換の最大数。デフォルトは -1 (制限なし) です。
count
指定した場合、この変数には置換が実行された回数が設定されます。
パラメータを渡す方法
デフォルトでは、このコールバック関数は一致するパラメータ $matches のみを受け取ります。さらに多くのパラメータを渡したい場合は、迂回路を使用できます。 、ことわざにあるように、匿名関数で渡す必要があるパラメーターにアクセスできる限り、すべての道はローマに通じています。したがって、選択肢は 2 つあります。
1. グローバル変数を使用する
$param1 = "test"; preg_replace_callback($pregRule, function ($match) { global $param1; return $match[1] . $param1 . $match[3]; }
2. オブジェクト指向の読み込みクラスを使用する
class Scrapy{ private $param1 = "test"; public function info(){ preg_replace_callback($pregRule, function ($match) { return $match[1] . $this->param1 . $match[3]; } } }
上記 2 つのメソッドを通じて、入力を渡したいコールバック関数を呼び出すことができますパラメーター。
まとめ
問題よりも解決策のほうが常に多いので、解決できない問題に出会っても、考え方を変えれば明るい未来が開けるかもしれません。
以上がphp preg_replace_callbackコールバック関数のパラメータ受け渡し問題についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。