- ベストアンサー
preg_replace()でマッチ文字列に関数を
PHPでのpreg_replace()でマッチした文字列に関数を適用したいのですが、上手くいきません。 $str = "hogeHoge"; $pattern = '/(h.ge)/i'; $replacement = strtoupper("$1"); echo preg_replace($pattern, $replacement, $str); // 期待する結果 : HOGEHOGE // 実行した結果 : hogeHoge 根本的に間違っているかもしれませんが、ご指南いただければ幸いです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>PHPでのpreg_replace()でマッチした文字列に関数を適用したいのですが、上手くいきません。 preg_replace ではそんなことは出来ません。 PHPはウェブ上のドキュメントが詳しいというのがメリットなので、ちゃんとマニュアルを読みましょう。 関数を適用するには、preg_replace_callback を使ってください。下記参照。 http://jp2.php.net/manual/ja/function.preg-replace-callback.php
お礼
ご回答ありがとうございます。 下記のように変更してうまくいきました。 $str = "hogeHoge"; $pattern = '/(h.ge)/i'; $replacement = "$1"; echo preg_replace_callback($pattern, create_function('$replacement','return strtoupper($replacement[0]);'), $str);