[PHP-users 28953] Re: 変数内で関数を実現するには

papa pahoo papa @ pahoo.org
2006年 4月 7日 (金) 13:58:05 JST


パパぱふぅです。
私も

> $String = "あいうえお。" . MUL(5);

が近道だと思います。

もう1つ、PHP には「可変変数」という機能があるのですが、
川口さんのご要望とはちょっと違うかも‥‥。

参考程度のものとして、$Stringの中にユーザー関数が出てきたら
無理矢理に評価するというパーサを作ってみました。

function __parse_str($str) {
    $ar = get_defined_functions();
    foreach($ar["user"] as $key=>$val) {
        if (preg_match("/$val/i", $str)) {
            $s = preg_replace("/(.*)($val)\((.*)\)(.*)/i", "\"$1\" . $2($3) . \"$4\";", $str);
            $str = eval("return " . $s . ";");
        }
    }
    return $str;
}

下記のように使えば、ご要望のアウトプットになるのではないかと‥‥。

$String = "あいうえお。MUL(5)";
print __parse_str($String);

==========================
  パパぱふぅ
  http://www.pahoo.org/
==========================




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