[PHP-users 16802]Re: 置換時の関数の利用方法

Seto seto @ cii.gr.jp
2003年 7月 18日 (金) 02:04:29 JST


 Setoです。
えー 私の提示した例は正しく動作しないことがわかりました。

>> <?php
>> function test_func($a) {
>>  return $a.'s';
>> }
>> $string = 'there are pen';
>> echo eregi_replace("(pen)", test_func("\\1"), $string);
この行が実行されたとき
test_funcには 最初に安原さんがおっしゃっていた様に
文字列の\1がわたってました。
で return '\1'.'s'; となり
そこで初めて\1への代入(例の場合は'pen')が行われていました
で 結果 pens となっていたのでした。
つまり関数実行後の返り値に対して文字の代入がされるという順番でした。

ですから 例のtest_funcを
function test_func($a) {
  return strrev($a).'s';
}
とすると結果は
there are neps
とはならずに
there are 1\s
となってしまいました。

これは希望する動作はしないということです。

安西さんにはご迷惑をおかけし
みなさんには嘘情報を流してしまい
申し訳ありませんでした。

私が書いた最初のサンプルがまずかったです・・・はい。
# しばらく謹慎してます。

*****************************************
 Junya Seto
 http://www.cii.gr.jp/~seto/php4/
*****************************************



PHP-users メーリングリストの案内