1

他にどのように言えばよいかわかりません.. フレーズ内の vBulletin など、文字列内の変数を「解析」しようとする場合、何を考慮する必要がありますか?

元;

{username} you have two notifications

私は smarty/raintpl をチェックして、これらすべての正規表現を調べました。smarty/raintpl はまさに私が必要としているものです。唯一の問題は、両方ともファイルから読み取っていて、データベースから抽出していることです。次のようなものが必要です。

$username = "Bob";
$html = "{username} you have two notifications";
display($html);

置換関数 (regex/str_replace) を使用すると、スクリプトや Web サイトの速度が低下しますか?

4

1 に答える 1

0

次のような単純な正規表現を使用できます。

$matches = array();

$string = '{username} you have two notifications';
preg_match_all('/{(\w+)}/', $string, $matches);
print_r($matches);

どの出力:

Array
(
    [0] => Array
        (
            [0] => {username}
        )

    [1] => Array
        (
            [0] => username
        )

)

または、もう少し高度なものが必要な場合:

$matches = array();

$string = '{username or something=3} you have two notifications';
preg_match_all('/{([^}]+)}/', $string, $matches);
print_r($matches);

同様に、次のようになります。

Array
(
    [0] => Array
        (
            [0] => {username or something=3}
        )

    [1] => Array
        (
            [0] => username or something=3
        )

)

できる限り厳密にすることをお勧めします。つまり、何を許可したいかを正確に把握し、それのみを許可します (つまり、小文字または数字とスペース)。これにより、長期的にはより簡単になります。

smarty、twig、dwoo などの外部テンプレート エンジンを使用するオプションがありますが、プロジェクトによっては、これがやり過ぎになることがあります。

于 2012-10-03T07:57:07.717 に答える