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

根岸 智幸 tomoyu-n @ tokyo-cafe.com
2006年 4月 7日 (金) 11:34:39 JST


根岸です。

細かい仕様がわからないと、正確なコードはかけませんが、
必ず「。」が日本語の最後に入るなら、

#!/usr/bin/php
<?php

function MUL($FL) {
      if($FL == 5) {
           $RE = "<BR>";
      } else {
           $RE = "<BR><BR>";
      }
      return $RE;
}
$String = "あいうえお。MUL(5)";

list($data,$func) = explode('。',$String);
if(preg_match('/(.*?)\((.*)\)/',$func,$match)) {
   echo $data.call_user_func($match[1],$match[2])."\n";
}
?>

でしょうか?


On 2006/04/07, at 3:49, MiCa小野 wrote:

> Shusaku Kawaguchi <kawaguchi @ kwgc.jp> wrote:
>> データベースから取得する文字列自体が、「あいうえお。MUL 
>> (5)」と
>> なっていて、おっしゃるとおりうまく分割できればよいのですが、
>> うまい方法が思いつかず困っています。
>
> その仕様自体に問題を感じなくもないですが...。
>
> しかし、敢えて現仕様のままやるのなら、文字列関数か正規表現関数で
> ガリガリ調べて、関数部分を取り出す以外ないのでは。
>
> というか、お示しのコードですと、MUL()は引数が5の時 
> に"<BR>"を一つ
> 、それ以外は"<BR>"を2つ返すだけなのですから、極端な話、 
> 文字列中
> の"MUL(5)"を"<BR>"に、その他の"MUL 
> (foo)"を"<BR><BR>"に置換してあ
> げるだけで十分に見えます。
>
> ....が、重ねて申しますけれど、「なんでそんなことしなきゃならんの
> か」が良くわかりません...。
>
> 他にも文字列に埋め込まれる関数がいろいろあるのでしょうか?
>
>
>
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みく 
> ださい
> http://www.php.gr.jp/php/novice.php3
>
>
>



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