0

これを行う方法を2日間探しました。私はこのフォームを持っています:

<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();

name 属性を使用して物事を置き換えます

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

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

これは、HTML タグを name 属性に置き換える関数を使用します。

于 2013-06-18T15:41:49.740 に答える