我已经两天时间搜索如何做到这一点。我有这样的表格:
<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在表单中将具有相同的文本,但不是输入,而是具有用户输入的值。
答案 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标记。