正则表达式{POST:name}

时间:2013-01-24 20:14:09

标签: php regex forms input preg-match-all

我对正则表达式有所了解,但我真的想了解更多有关它的信息,现在我正在尝试创建一个函数来检测我的内容(来自数据库)中的所有{}并检查括号之间的内容。如果有一个带有名称的POST或GET(格式:POST:name或GET:name},我想用该值替换它们。

实施例: 当我有一个包含以下输入的表单时:

Name
Email
Message

然后在值属性中输入:{POST:Name} 然后,脚本必须检测{POST:Name}并将其替换为$_POST['name']中的字符串。我已经在Google上搜索过,但发现太多了,我不知道该用什么。

现在我有:

<?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);
        }

?>

但这不起作用。

1 个答案:

答案 0 :(得分:0)

你应该使用preg_replace,比str_replace更好。 如果你使用preg_replace,你不需要你的第一个条件,只能用一条指令做同样的代码。

http://fr2.php.net/preg_replace

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

我的正则表达式可能是错误的,但这样的事情应该有用。