[PHP-users 19362]Re: 正規表現置換について
komura
komura @ ma9.seikyou.ne.jp
2003年 12月 16日 (火) 17:13:57 JST
komura です。
既に解決されているようですが、他の方法を思いつきましたので投稿します。
On Tue, 16 Dec 2003 13:38:24 +0900
Osamu Shigematsu <m5issige @ mr.hitachi-medical.co.jp> wrote:
> 基本的なことだと思うのですが、ちょっと効率の良い方法が思いつかないので、
> アドバイスをいただければと思います。
>
> [[title:utl]] という文字列を <a href="url">title</a> に置換したいと思い
> ます。
一文が長くなるので折り返していますが、
mb_ereg_replace() であれば、以下でも可能だと思います。
$dst = mb_ereg_replace(
'\[\[(.+?):(.+?)\]\]',
'"<a href=\"".rawurlencode("\2")."\">".htmlspecialchars("\1")."</a>"',
$src, "e" );
preg_replace() でも、以下のようにすれば、同じだと思います。
$dst = preg_replace(
'/\[\[(.+?):(.+?)\]\]/e',
'"<a href=\"".rawurlencode("\2")."\">".htmlspecialchars("\1")."</a>"',
$src );
> mb_ereg_match だとオプションを指定できるようですが、mb_ereg, mb_split だ
> とオプションが特に指定できないように思うのですが、設定することは可能でしょ
> うか?
mb_regex_set_options() を使えば正規表現のオプションについては指定が
可能です。
http://jp.php.net/manual/ja/function.mb-regex-set-options.php
> 後、上記ですが、思いっきり意味不明な表現ですが、pcre (preg_xxx) だと、
> 空の正規表現なども使えるのに、mb_ereg だと駄目で、ちょっと不便、使える方
> 法があれば知りたい、という意味でした。
$array = preg_split( '//', $str );
と同様の結果が欲しいということでしょうか?
同じではないのですが、それに近い処理として、以下のような方法を使ったことが
あります。
$array = explode( "\n", mb_ereg_replace( '(.)', "\\1\n", $str ) );
--
komura <komura @ ma9.seikyou.ne.jp>
PHP-users メーリングリストの案内