[PHP-users 16801]Re: 置換時の関数の利用方法
Morikazu Yasuhara
yasuhara @ m-ripple.com
2003年 7月 18日 (金) 00:49:32 JST
安原です。
> Setoです。
>
> えーと 正規表現のパターンこそ違いますが私の環境では
> 以下のスクリプトでテスト確認できてます。
> <?php
> function test_func($a) {
> return $a.'s';
> }
> $string = 'there are pen';
>
> echo eregi_replace("(pen)", "\\1s", $string);
> echo '<br>';
>
> echo eregi_replace("(pen)", test_func("\\1"), $string);
> echo '<br>';
> ?>
>
> 出力結果
> there are pens
> there are pens
上記プログラムを動作させたところ正常に動作しました。
申し訳ございません。違うところに原因があるようです。
原因は分からないのですが、下記プログラムで動作させる
と動作しません。
<?php
function test_func($num) {
return pack("n", $num);
}
$string = "てすと";
// 1出力結果 てすと
echo $string . "\n";
// 2出力結果 63647%て63648%す63649%と63650%
echo eregi_replace("&#(.....);", "\\1%", $string) . "\n";
// 3出力結果 てすと
echo eregi_replace("&#(.....);", test_func("\\1"), $string) . "\n";
// 410進のコードをimodeの絵文字に変換して出力
echo preg_replace('/&#(.....);/e','test_func(\'\\1\')',$string) . "\n";
?>
3がSetoさんにご教授いただいた方法ですが、4と同じ
結果になりません。(実現したかったのは4の動作)
ただ、2は正常に動作しているので正規表現自体は間違
っていないと思うのですが。
全く検討違いのことでしたら申し訳ございません。
ちなみにこちらの環境は下記のようになっております。
RedHat8.0
Apache1.3.27
PHP4.3.2
PHP-users メーリングリストの案内