在字符串中使用htmlentities

时间:2008-10-16 16:06:05

标签: php html-entities

我知道我应该在所有表单文本输入字段中使用htmlentities但这不起作用:

<?php
echo "<tr>
        <td align=\"right\">".Telephone." :</td>    
        <td><input type=\"text\" name=\"telephone\" size=\"27\"
            value=\"htmlentities($row[telephone])\"> Inc. dialing codes
        </td>    
</tr>";
?>

它只是在表格中将输入值显示为“htmlentities(0123456789)”?我做错了什么?

7 个答案:

答案 0 :(得分:5)

尝试使用

value=\"" . htmlentities($row[telephone]) . "\"

那里。目前,您的字符串只包含htmlentities字符串并将变量拼接在其中。您需要输出字符串,调用函数并将其结果放置到位,如上所述。

答案 1 :(得分:3)

您无法在字符串中间调用函数。您需要从函数调用中获取返回值,然后将其包含在字符串中。

...然而

<tr>
    <td align="right">
        <label for="telephone">Telephone:</label>
    </td>    
    <td>
        <input type="text" 
               name="telephone" 
               id="telephone"
               size="27" 
               value="<?php 
                   echo htmlentities($row[telephone]); 
               ?>"> 
        Inc. dialing codes 
    </td>
</tr>

......会更清洁。

将摆脱不推荐的表示标记并使用表格进行布局。

答案 2 :(得分:1)

@ workmad3:这不会像他在做PHP一样。

<?php echo '<tr>
                <td align="right">' . Telephone . ' :</td>    
                <td><input type="text" name="telephone" size="27" value="' . htmlentities($row[telephone]) . '" /> Inc. dialing codes</td>    
        </tr>';

答案 3 :(得分:1)

这将有效:

<?php
echo "    <tr>
                    <td align=\"right\">Telephone :</td>    
                    <td><input type=\"text\" name=\"telephone\" size=\"27\" value=\"".htmlentities($row[telephone])."\"> Inc. dialing codes</td>    
            </tr>";
?>
顺便说一下,我还纠正了你在这里遇到的一些非常奇怪的语法,比如连接常量“Telephone”的地方,它实际上应该在字符串里面。这些细节很重要,很容易破坏你的代码。

另外,我建议在这样的字符串周围使用单引号而不是双引号,这样就不必转义字符串中的所有双引号。

答案 4 :(得分:1)

如果你只是在寻找make-your-output-safe-in-hml;你应该使用htmlspecialchars(),因为它只是一个电话号码。

htmlspecialchars($row[telephone], ENT_QUOTES);

htmlentities()有点慢,而且多字节字符不太好。但我猜你只是喷射那些问题。

答案 5 :(得分:1)

如果要组合大部分HTML和PHP变量,可以做两件事。

一,使用HEREDOC结构。

$txt = <<<HERETEXT
Put your HTML here.
HERETEXT;

echo $txt;

其次,使用第一个类变量来命名函数,然后在HEREDOC中使用它。

$he = 'htmlentities';

$txt = <<<HERETEXT
{$he($string, ENT_QUOTES, 'UTF-8')}
HERETEXT;

echo $txt;

然而,HTML不应该以非常大的块处理,因为增加了令人讨厌的错误的风险。此外,你可能会不必要地重复自己。

答案 6 :(得分:0)

首先,不要在字符串中回显HTML。将代码与标记分开。

<tr>
    <td align="right">Telephone :</td>
    <td><input type="text" name="telephone" size="27"
        value="<?php echo htmlentities($row['telephone']); ?>"> Inc. dialing codes</td>
</tr>