中級プログラマの自宅でPHP ブログ

自宅用ポータルシステム「MyHome Portal」をオープンソースで公開。MyHome Portalの説明とエンハンス情報。

PHP正規表現のe修飾子

Ver.1.52のカレンダーのGoogle地図、Google経路検索連携で、preg_replace正規表現のe修飾子というのを使っています。(正規表現CSS以上に苦手なので、これが最善かどうかわかりません。)

preg_replaceの部分のみ、下に抜き出しておきます。(改行を入れています)

本文の<m></m>タグで囲んだ地名をのGoogle地図とGoogle経路検索連携の<a></a>タグに置き換えています。

e修飾子は、正規表現の置換とPHPとしての文字列置換を合わせて行えるというもののようです。パターンマッチしたものに、urlencodeをかけたり、PHP変数を入れて文字連結できます。e修飾子が無ければ、これの実現は難しかったと思います。

$str = preg_replace('/<m>(.*?)<\/m>/e', "'$1' . ' <a href=\"[]http://maps.google.co.jp/maps?q=' . urlencode('$1') . '\" \" target=\"_blank\" class=\"map_href\">→地図</a> <a href=\"http://maps.google.co.jp/maps?ie=UTF8&f=d&ttype=dep&dirflg=r&saddr='.'$saddr'.'&daddr=' . urlencode('$1') . '\"\" target=\"_blank\" class=\"route_href\">→経路</a> '", $str);