2

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

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

Name
Email
Message

然后在值属性中输入:{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

您应该使用 preg_replace,而不是 str_replace。如果你使用 preg_replace,你不再需要你的第一个条件,et 可以只用一条指令来做同样的代码。

http://fr2.php.net/preg_replace

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

我的正则表达式可能是错误的,但这样的东西应该可以工作。

于 2013-01-24T20:24:06.587 回答