PHP:不能转义输入中的字符


PHP: Can't escape characters in for inputs

我是PHP的新手。试图逃避一些php脚本的形式,不能弄清楚如何做到这一点。

我尝试了所有不同的组合''和'",但我卡住了。请提供脚本的相关部分,并建议我做错了什么。

这是input的例子:

<label for="fullName">Full Name : </label>
<input type="text" name="fullName" id="fullName" value='' "<?php  echo $C_fullName ?>" '' />

这是脚本中显示/重新显示部分的其余部分,因此您可以在上下文中看到它…

            //Redisplay/Display form
            $self = htmlentities($_SERVER['PHP_SELF']);
            $displayOutput .= '
            <form action="' . $self . '" method="post">
                <fieldset>
                    <div>
                        <label for="fullName">Full Name : </label>
                        <input type="text" name="fullName" id="fullName" value='' "<?php  echo $C_fullName ?>" '' />
                    </div>
                    <div>
                        <label for="email"> Email :</label>
                        <input type="email" name="email" id="email" />
                    </div>
                    <div>
                        <label for="mailFormat">Mail Format</label>
                        <select name="mailFormat" id="mailFormat">
                            <option value="plain">Plain text</option>
                            <option value="html">HTML</option>
                        </select>
                    </div>
                    <div>
                        <input type="checkbox" name="terms" id="terms" value="yes" />
                        <label for="terms">Tick this box to confirm you have read our <a href="#">terms and conditions</a></label>
                    </div>
                    <div>
                        <input type="submit" name="submit" value="submit" />
                    </div>
                </fieldset>
            </form>';//close form

尝试更改这行代码

<input type="text" name="fullName" id="fullName" value='' "<?php  echo $C_fullName ?>" '' />

<input type="text" name="fullName" id="fullName" value="'.$C_fullName.'" />

问题是您试图从PHP内部转到PHP求值。这没有意义。

解析文档时,它被解释为正常的逐字文本,直到解释器遇到像<?php这样的转义序列。直到结束的?>(或直到文件的末尾)的所有内容都被解释为PHP。这就是为什么在代码中添加另一个<?php开头序列是无意义的。

上面代码中的表单标记是作为PHP字符串构建的。您要做的是创建一个字符串并将变量连接到其中。PHP提供了多种方法来做到这一点。在您的情况下,最简单的方法是使用连接操作符.。关闭字符串,连接变量,然后连接字符串的其余部分。
… value="' . $C_fullName . '" …

这与第一行的action定义没有什么不同。

您可能还需要查看heredoc语法,它对于您的情况非常有用。

您可以尝试使用以下代码:

$displayOutput .= '
        <form action="' . $self . '" method="post">
            <fieldset>
                <div>
                    <label for="fullName">Full Name : </label>
                    <input type="text" name="fullName" id="fullName" value='; echo $C_fullName; $displayOutput .=' />
                </div>
                <div>
                    <label for="email"> Email :</label>
                    <input type="email" name="email" id="email" />
                </div>
                <div>
                    <label for="mailFormat">Mail Format</label>
                    <select name="mailFormat" id="mailFormat">
                        <option value="plain">Plain text</option>
                        <option value="html">HTML</option>
                    </select>
                </div>
                <div>
                    <input type="checkbox" name="terms" id="terms" value="yes" />
                    <label for="terms">Tick this box to confirm you have read our <a href="#">terms and conditions</a></label>
                </div>
                <div>
                    <input type="submit" name="submit" value="submit" />
                </div>
            </fieldset>
        </form>';