目次
preg_replace_callbackとは何ですか?
動的なコンテンツ変換
複数のキャプチャグループとの作業
高度な使用:ステートフルな代替品
最終的な考え
ホームページ バックエンド開発 PHPチュートリアル 「preg_replace_callback」で正規表現コールバックの力を活用します

「preg_replace_callback」で正規表現コールバックの力を活用します

Jul 30, 2025 am 05:37 AM
PHP Strings

preg_replace_callbackは、ダイナミックストリングの交換用のPHPの強力なツールであり、通常の試合ごとにカスタム関数を呼び出すことで複雑なロジックを実装します。 1。関数構文はpreg_replace_callback($ pattern、$ callback、$ subject)です。ここで、$ callbackは一致するコンテンツを動的に処理できます。 2。[10]を[20]に置き換えるなど、数値変換に使用できます。 3. yyyy-mm-dd形式の日付を「2024年5月15日」に変換するなど、マルチキャプチャグループ操作をサポートします。 4.各単語に増分番号を追加するなど、使用キーワードと組み合わせて状態を維持できます。 5.コンテキストの判断、数学操作、または外部データクエリでのシナリオに適しており、インテリジェントテキスト処理を実装するための優先方法です。

「preg_replace_callback」で正規表現コールバックの力を活用します

PHPでの文字列交換をさらに制御する必要がある場合、 preg_replace_callback 、単純な発見とレプレースの操作を超える強力なツールです。静的またはパターンベースの置換のみを許可するpreg_replaceとは異なり、 preg_replace_callback使用すると、各交換中にカスタムロジックを実行できます。

「preg_replace_callback」で正規表現コールバックの力を活用します

preg_replace_callbackとは何ですか?

preg_replace_callback正規式を文字列に適用し、見つかったすべての一致について、ユーザー定義の関数を呼び出して置換値を決定します。このコールバック関数は、一致したセグメントを配列として受信し、その一致を置き換えるべき文字列を返します。

基本的な構文は次のとおりです。

「preg_replace_callback」で正規表現コールバックの力を活用します
 preg_replace_callback($ pattern、$ callback、$ subject);
  • $pattern :検索する正規表現パターン。
  • $callback :各一致を処理する呼び出し可能な関数。
  • $subject :入力文字列(または文字列の配列)。

このセットアップは、交換が試合のコンテンツに依存している場合、またはカウント、変換、外部データ検索などのロジックが必要な場合に特に役立ちます。


動的なコンテンツ変換

最も一般的な用途の1つは、試合でキャプチャされたものに基づいてコンテンツを変換することです。

「preg_replace_callback」で正規表現コールバックの力を活用します

たとえば、四角い括弧内にある数値を2倍にしたいとします。

 $ text = "値は[10]、[20]、[30]です。";

$ result = preg_replace_callback(
    '/\ [(\ d)\]/'、
    function($ matches){
        $ number =(int)$ matches [1];
        戻る '[' 。 ($ number * 2)。 ']';
    }、
    $テキスト
);

echo $ result; //出力:値は[20]、[30]、および[60]です。

ここでは、Regex /\[(\d )\]/正方形の括弧内の数字をキャプチャします。コールバックは、キャプチャされた文字列を整数に変換し、それを2倍にし、ブラケットに戻します。

この種の動的な操作は、プレーンpreg_replaceでは不可能です。


複数のキャプチャグループとの作業

また、パターンに複数のキャプチャグループが含まれている場合にコールバックを使用することもでき、交換ロジックはその組み合わせによって異なります。

YYYY-MM-DDからより読みやすい形式に日付を再フォーマットしているとします。

 $ dateText = "2024-05-15のイベントと2024-06-20の別のイベント。";

$ result = preg_replace_callback(
    '/(\ d {4}) - (\ d {2}) - (\ d {2})/'、
    function($ matches){
        $ year = $ matches [1];
        $ month = $ matches [2];
        $ day = $ matches [3];

        $タイムスタンプ= strtotime( "$ year- $ month- $ day");
        return date( 'f j、y'、$ timestamp); //「2024年5月15日」に変換
    }、
    $ dateText
);

echo $ result; // outputs:2024年5月15日のイベントと2024年6月20日のイベント。

コールバックは、PHPのstrtotimedate関数を使用して自然な言語の日付を作成します。これは、静的な置換が達成できないものです。


高度な使用:ステートフルな代替品

時には、カウンターの増加やトラッキングの交換など、複数の試合で状態を維持する必要がある場合があります。

コールバックは、 useにより親スコープから変数にアクセスできるため、コンテキストを維持できます。

 $ count = 0;
$ text = "アイテム:Apple、Banana、Cherry。";

$ result = preg_replace_callback(
    '/\ b \ w \ b/'、
    function($ matches)use(&$ count){
        strtoupperを返します($ mates [0])。 '_'。 ($ count);
    }、
    $テキスト
);

echo $ result; //出力:items_1:Apple_2、Banana_3、Cherry_4。

&$countの使用に注意してください。コールバックが通話全体で変更できるようにします。

これは、マッチの番号付け、代替スタイル、一致順に基づく条件付きロジックなどのタスクに最適です。


最終的な考え

preg_replace_callback 、プレーンストリングの交換機能が一致できないレベルの柔軟性を解き放ちます。あなたがいるかどうか:

  • キャプチャされた値を数学的に変更します
  • 日付、タグ、またはマークアップを再フォーマットします
  • 一致あたりのビジネスロジックを適用します
  • 代替品を越えて状態を維持します

…これは、PHPでのインテリジェントで動的なテキスト処理のための頼りになる機能です。

覚えておいてください:

  • 特に大きな入力で、コールバックを効率的に保ちます。
  • キャプチャグループを賢く使用して、必要なコンテキストを渡します。
  • 常にエッジのケースをテストします。

しっかりしたパターンとスマートコールバックを使用すると、複雑なテキストを正確に変換できます。

基本的に、リテラルスワップを超えて何かをしている場合、 preg_replace_callbackがおそらく最善の策です。

以上が「preg_replace_callback」で正規表現コールバックの力を活用しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ホットトピック

PHPでのヌルバイトと文字列終端で一般的な落とし穴を解決する PHPでのヌルバイトと文字列終端で一般的な落とし穴を解決する Jul 28, 2025 am 04:42 AM

nullbytes(\ 0)cancaunextectedbehaviorinphpの場合、interfacingsostensionsustentionSystemcallsbecausectreats \ 0asaStringSarebinary-safeand-preseverfullent.2.infileoperations、infileoperations、infeNamesconteainingnullbyteslike "

「sprintf」と「vsprintf」を使用した高度な文字列フォーマット手法 「sprintf」と「vsprintf」を使用した高度な文字列フォーマット手法 Jul 27, 2025 am 04:29 AM

sprintfとvsprintfは、PHPで高度な文字列フォーマット関数を提供します。回答は次のとおりです。1。浮動小数点精度と%dは%.2fを介して制御でき、dで整数型を確保でき、dでゼロパディングを実現できます。 2.変数位置は、%1 $ sや%2 $ dなどの位置的プレースホルダーを使用して修正できます。これは、国際化に便利です。 3.左アライメントと]右アライメントは、テーブルまたはログ出力に適した%-10Sで達成できます。 4。VSPRINTFは、SQLまたはメッセージテンプレートの動的生成を容易にするアレイパラメーターをサポートします。 5.元の名前のプレースホルダーはありませんが、{name}構文は通常のコールバック関数を介してシミュレートできます。または、extract()と組み合わせて連想配列を使用できます。 6。Substr_Co

バリューオブジェクトとしての文字列:ドメイン固有の文字列タイプへの最新のアプローチ バリューオブジェクトとしての文字列:ドメイン固有の文字列タイプへの最新のアプローチ Aug 01, 2025 am 07:48 AM

rawStringsindomain-drivenApplicationsは、ValueObjedStopReventBugsAndimproveTypeTytyのValueObue obue obue obtedsopreated; 1. 1.SustoprimiteObsessionを使用します

PHPのPCRE関数と一致する高度なパターン PHPのPCRE関数と一致する高度なパターン Jul 28, 2025 am 04:41 AM

PHPのPCRE関数は、高度な通常の機能をサポートしています。 2。ポジティブ/ネガティブな先制のアサーション(?=)および(?!)および発行後のアサーション(???)および発行後のアサーション(??

防御的な文字列の取り扱い:PHPでのXSSと噴射攻撃の防止 防御的な文字列の取り扱い:PHPでのXSSと噴射攻撃の防止 Jul 25, 2025 pm 06:03 PM

todefendagainstxssandinjectionInphp:1

バイナリデータの開梱:PHPの `pack()`および `unpack()`の実用的なガイド バイナリデータの開梱:PHPの `pack()`および `unpack()`の実用的なガイド Jul 25, 2025 pm 05:59 PM

PHPのpack()およびunpack()関数は、PHP変数とバイナリデータ間の変換に使用されます。 1.Pack()パッケージ整数や文字列などの変数はバイナリデータになり、Unpack()はバイナリデータをPHP変数に解凍します。どちらもフォーマット文字列に依存して、変換ルールを指定します。 2。一般的な形式コードには、C/C(/unsigned文字を含む8ビット)、S/S(16ビットショート整数)、L/L/V/N(32ビットの長い整数、異なるエンドアンネスに対応)、F/D(フローティングポイント/ダブル精度)、A/A(塗りつぶし文字列)、X(null bute)などが含まれます。大規模なエンディアン(ネットワーク標準)。 vは、プラットフォーム間で通信するときに最初に使用する必要があります。

PHP文字列エンコードの迷路をナビゲートする:UTF-8以降 PHP文字列エンコードの迷路をナビゲートする:UTF-8以降 Jul 26, 2025 am 09:44 AM

PHPはデフォルトでUnicodeをサポートしていないため、UTF-8処理はPHPで手動で管理する必要があります。 1. MBSTRING拡張機能を使用して、MB_STRLEN、MB_SUBSTRなどのマルチバイトセキュリティ関数を提供し、UTF-8エンコーディングを明示的に指定します。 2.データベース接続がUTF8MB4文字セットを使用していることを確認します。 3. HTTPヘッダーとHTMLメタタグを介してUTF-8を宣言します。 4.ファイルの読み取りと書き込み中にエンコードを確認および変換します。 5. JSON処理前にデータがUTF-8であることを確認します。 6.検出と変換をエンコードするには、MB_DETECT_ENCODINGとICONVを使用します。 7.データの腐敗を防ぐことは、後の修理よりも優れており、UTF-8をすべてのレベルで使用して、コードの問題を避けるために使用する必要があります。

JSONを超えて:PHPのネイティブストリングシリアル化の理解 JSONを超えて:PHPのネイティブストリングシリアル化の理解 Jul 25, 2025 pm 05:58 PM

PHPのネイティブシリアル化は、JSONよりもPHPの内部データストレージと送信により適しています1。完全なデータ型(int、float、boolなど)を保持できるため。 2。プライベートおよび保護されたオブジェクトプロパティをサポートします。 3.再帰的な参照を安全に処理できます。 4.脱介入中に手動タイプの変換は必要ありません。 5.通常、パフォーマンスはJSONよりも優れています。ただし、言語間のシナリオで使用するべきではなく、リモートコード実行攻撃のトリガーを避けるために、信頼されていない入力のためにUnserialize()を呼び出さないでください。 PHP環境に限定されており、高忠実度データが必要な場合に使用することをお勧めします。

See all articles