Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在字符串中使用HTML属性_Php_Html Entities - Fatal编程技术网

Php 在字符串中使用HTML属性

Php 在字符串中使用HTML属性,php,html-entities,Php,Html Entities,我知道我应该对所有表单文本输入字段使用htmlentities,但这不起作用: <?php echo "<tr> <td align=\"right\">".Telephone." :</td> <td><input type=\"text\" name=\"telephone\" size=\"27\" value=\"htmlentities($row[telephon

我知道我应该对所有表单文本输入字段使用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>";
?>
它只是在表单中以htmlentities0123456789的形式显示输入值?我做错了什么?请尝试使用

value=\"" . htmlentities($row[telephone]) . "\"
在那里。目前,您的字符串只包含htmlentities字符串,并将变量拼接到中。您需要取出字符串,调用函数并将其结果放置到位,如上所述。

尝试使用

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

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

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

然而

<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>
。。。会更干净


将去掉过时的表示标记和使用布局表。

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

然而

<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>
。。。会更干净


就像摆脱不推荐使用的表示性标记和使用表格进行布局一样。

首先,不要在字符串中回显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>

首先,不要在字符串中回显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>

@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>';

@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>';
这将有助于:

<?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>";
?>
顺便说一句,我还纠正了一些非常奇怪的语法,比如连接常量phone,它应该在字符串中。这些细节很重要,很容易破坏代码

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

这将起作用:

<?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>";
?>
顺便说一句,我还纠正了一些非常奇怪的语法,比如连接常量phone,它应该在字符串中。这些细节很重要,很容易破坏代码


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

如果您只是想在hml中确保输出的安全性;您应该改用htmlspecialchars,因为它“只是”一个电话号码

htmlspecialchars$行[电话],ENT_报价


htmlentities有点慢,对于多字节字符来说没有那么好。但是我猜你没有解决这些问题,只是jet。

如果你只是想在hml中保证输出的安全;您应该改用htmlspecialchars,因为它“只是”一个电话号码

htmlspecialchars$行[电话],ENT_报价


htmlentities有点慢,对于多字节字符来说没有那么好。但是我猜你不会直接解决这些问题。

如果你想结合大量HTML和PHP变量,你可以做两件事

第一,使用HEREDOC结构

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

echo $txt;
其次,使用第一个类变量命名函数,然后在herdoc中使用该变量

$he = 'htmlentities';

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

echo $txt;

但是,HTML不应该在非常大的块中处理,因为这样会增加严重错误的风险。此外,您可能会不必要地重复自己的操作。

如果您想将大量HTML和PHP变量组合在一起,您可以做两件事

第一,使用HEREDOC结构

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

echo $txt;
其次,使用第一个类变量命名函数,然后在herdoc中使用该变量

$he = 'htmlentities';

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

echo $txt;

但是,HTML不应该在非常大的块中处理,因为这样会增加严重错误的风险。此外,您可能会不必要地重复自己的操作。

+不是PHP中的concat运算符,而是.should:value=\。htmlentities$行[电话]\改变。。。我已经有一段时间没有使用实际的PHP:+了,它不是PHP中的concat运算符,而是。应该是:value=\。htmlentities$行[电话]\改变。。。我已经有一段时间没有使用真正的PHP了:他的HTML在一个PHP字符串中,所以标记不起作用。另外,顺便说一句,使用短标记是一个坏主意,因为它们必须在php.ini中启用,您可能无法访问它。但是不应该将标记放在字符串中,请注意。当然,他在PHP标记中的HTML会起作用,因为他有一个回音。他的HTML在PHP字符串中,所以标记不会起作用。另外,顺便说一句,使用短标记是一个坏主意,因为它们必须在php.ini中启用,您可能无法访问它。不应该将标记放在字符串中,注意这点。当然,他的PHP标记中的HTML会起作用,因为他有回声。我同意只需要htmlspecialchars。当然,我希望您也在实现utf-8。我同意只需要htmlspecialchars。我当然希望如此
您也在实现utf-8。您应该使用htmlspecialchars,而不是htmlentities。当然,只要您正在实现utf-8,就应该使用htmlspecialchars,而不是htmlentities。当然,只要您正在实现utf-8。