文字列の置換で、置換リストに無名関数を含めた連想配列を使う方法の実験

$table = array(
 '(株式|有限|合同)会社' => create_function('$str', 'return sprintf("(%s)", mb_substr($str,0,1,"UTF-8"));')
);
foreach ($table as $regex=>$replace) {
 preg_match(sprintf('/%s/', $regex), '株式会社', $m);
 if (is_callable($replace)) { echo $replace($m[1]); } // prints (株)
}

ちなみに、こうやって変に一般化にこだわるより、置換処理を個々に書いていった方が早いことが往々にしてあると思いますのでご注意を。

Leave a Reply