0

我已经两天时间在寻找如何做到这一点。我有这个表格:

<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 创建的,所以我无法知道输入的名称是什么。有没有办法动态替换,例如,<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 将在表单中具有相同的文本,但不是输入,而是用户输入的值。

4

1 回答 1

0

(我对PHP有点脱节。)

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

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

    ob_start();

    ... the CMS outputs HTML

    ob_end_flush();
    $s = ob_get_contents();

使用名称属性替换东西

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

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

这使用了一个用名称属性替换 HTML 标记的函数。

于 2013-06-18T15:41:49.740 回答