0

テーマ ベースのスクリプトを作成中ですが、スクリプトによって置き換えられなかった「変数」またはトークンを置き換える方法が必要です。

形式は次のとおりです。

^_variablename_^

つまり、変数を使用して次の処理を行った後、名前=Adam、職業=プログラマーとします。

Hello, my name is ^_title_^^_name_^, and I work as a ^_occupation_^.

私たちは^_title_^まだその場に残されるでしょう。

「変数」の名前を知らなくても、これらを取り除く方法が必要です。

前もって感謝します :)

4

3 に答える 3

1

再処理:

$str = 'Hello, my name is ^_title_^Adam, and I work as a programmer.';
$str = preg_replace('/\^_(\w+)_\^/', '', $str);

echo $str;

コードパッド

于 2012-09-03T08:59:53.937 に答える
0

変数を代入するときにpreg_replace_callbackを使用してみてください。代入できない変数を単純に無視できます。

$input = 'Hello, my name is ^_title_^^_name_^, and I work as a ^_occupation_^.  ';
$variables = array('name' => 'adam');
$re = preg_replace_callback('/\^_(?<var>.+?)_\^/', function($params) use ($variables) {
        if (isset($variables[$params['var']])) {
            return $variables[$params['var']]; 
        } else {
            return '';
        }   
    },  
$input);

print $re;

これは、php 5.3.0 以降で機能する無名関数構文を使用します。以前のバージョンで使用する場合は、これに対して別のコールバックを宣言する必要がある場合があります。

于 2012-09-03T09:06:30.017 に答える
0
$str = 'Hello, my name is ^_title_^Adam, and I work as a programmer.';
echo preg_replace('/^_[\w_-]+_^/i', '', $str);
于 2012-09-03T09:01:44.493 に答える