2

正規表現については少し知っていますが、もっと詳しく知りたいので、コンテンツ内のすべての{}を(データベースから)検出し、括弧内の内容をチェックする関数を作成しようとしています。名前(形式:POST:nameまたはGET:name}のPOSTまたはGETがある場合は、それらをその値に置き換えたいと思います。

例:次の入力を持つフォームがある場合:

Name
Email
Message

次に、value属性に次のように入力します。{POST:Name} 次に、スクリプトはを検出する必要があり、{POST:Name}それを。の文字列に置き換えます$_POST['name']。私はすでにグーグルで検索しましたが、実際に何を使うべきかわからないほど多くを見つけました。

今私が持っています:

<?php
        preg_match_all("/{(POST|GET):[.*](})/", $content, $matches, PREG_SET_ORDER);

        foreach($matches AS $match)
        {
            if(isset($_POST[$match]))
                $content = str_replace('{POST:'.$match, $_POST[$match], $content);
            else
                $content = str_replace('{GET:'.$match, $_GET[$match], $content);
        }

?>

しかし、これは機能しません。

4

1 に答える 1

0

str_replace よりも preg_replace を使用する必要があります。また、preg_replace を使用すると、最初の条件が不要になり、et は 1 つの命令だけで同じコードを実行できます。

http://fr2.php.net/preg_replace

<?php preg_replace('#{(POST|GET):(.*)}#','$_$1[$2]',$content); ?>

私の正規表現は偽になる可能性がありますが、このようなものはうまくいくはずです。

于 2013-01-24T20:24:06.587 に答える