动态地用$ _POST ['city']替换<input name =“city”type =“text”/>

时间:2013-06-18 15:24:01

标签: php html

我已经两天时间搜索如何做到这一点。我有这样的表格:

<form action="preview.php" method="post">
In the city of <input name="city" type="text" /> at <input name="days" type="text" /> days of <input name="month" type="text" /> gathered the following people: <input name="name1" type="text" /> and <input name="name2" type="text" /> with the objective of...

<button type="submit">Preview</button></form>

而且preview.php应该有这个:

In the city of <?php echo $_POST['city'];?> at <?php echo $_POST['days'];?> days of <?php echo $_POST['month'];?> gathered the following people: <?php echo $_POST['name1'];?> and <?php echo $_POST['name2'];?> with the objective of...

事情是表单是通过CMS创建的,所以我无法知道输入的名称是什么。 有没有办法用dinamically替换<input name="city" type="text" /><?php echo $_POST['city'];?>? 我有一些想法,但由于我是PHP的新手,我不知道如何实现它们。

也许preg_replace可以做到,但我不知道如何防止输入的名称发生变化。 或者也许我可以使用一个数组,例如<input name="data[]" type="text" />和类似的东西:

for($i=0;"";$i++){

if( isset( $_POST["data{$i}"] )) {

$string = $form;
$patterns = '<input name="data[]" type="text" />';
$replacement = $_POST["data{$i};
preg_replace($patterns, $replacements, $string);

}

}

我真的迷失在这里,如果有人可以帮助我,我会很感激。

PS:我不是母语为英语的儿子,如果我犯了一些错误,我很抱歉。

更新: 用户可以在CMS中创建将保存在数据库中的不同表单。然后他可以选择他想填写哪一个。一旦他填写它,他可以预览它并将其保存为PDF格式。 preview.php在表单中将具有相同的文本,但不是输入,而是具有用户输入的值。

1 个答案:

答案 0 :(得分:0)

(我与PHP有点脱节。)

使用ob_ functions(输出缓冲区)捕获表单的HTML。

if ($_SERVER['REQUEST_METHOD'] == 'POST' {

    ob_start();

    ... the CMS outputs HTML

    ob_end_flush();
    $s = ob_get_contents();

使用name属性替换内容

    function postText($matches) {
       return $_POST[$matches[1]];
    }

    $s = preg_replace_callback('/<[^>]* name="([^">]+)"[^>]*>/',
        "postText",
        $s);
    echo $s;

这使用一个函数来替换带有name属性的HTML标记。