e
修飾子は非推奨です。その使用はお勧めできません。
代わりにpreg_replace_callback() function
、正規表現の置換から PHP コードを呼び出すこともできますが、e
修飾子に具体化された不適切な慣行はありません。
元のサンプルコードは次のことを試みていました:
return preg_replace('|#(\d)|e', '$args[\\1 - 1]', $str);
- 数字が続くハッシュを含む文字列で始まります
$args
数字より 1 小さい番号の配列要素の内容を取得します。
- 文字列内の数字を要素の内容に置き換え
$args
ます。
@Jonが言ったように、これは正規表現の置換を使用できる最も便利なことではありませんが、それを行う必要がある場合は、次を使用して、より良いコーディングプラクティスで簡単に行うことができますpreg_replace_callback()
:
preg_replace_callback(
'|#(\d)|',
function($matches) use($args) {return $args[$matches[1]-1];},
$str
);
ここでの利点は、置換コードの柔軟性が大幅に向上したことです。
それが役立つことを願っています。(読みやすいように複数行に分けています)
上記のコードは、PHP 5.3 以降を使用していることを前提としています。create_function()
以前のバージョンを使用している場合は、インライン関数ではなく使用する必要があります。
私は質問に直接答えていないことを知っていますが、@Jon はすでにその側面に対処しているので問題ありません。しかし、これがより良いコードへとあなたを導くことを願っています。