通过php在html元素中打印特殊字符';s属性


Print special characters via php inside a html element's attribute

假设$string = AX èdfdfdèsèdsè'/'"(实际上,$string是从DB分配的(

所以当我打印以下内容时,

echo "<option value='". htmlspecialchars($string) ."'>".$string."</option>";

我得到输出,

<option '&quot;'="" value="AX èdfdfdèsèdsè">AX èdfdfdèsèdsè'/'"</option>

我如何才能正确地逃避这一点,这样我就不会创建另一个无用的属性&而是得到与$string中相同的值?

此外,Php作为一个整体不能逃脱$string的原因是什么?

另一个答案是使用htmlspecialchars($value,ENT_QUOTES),所以基本上是

echo "<option value='". htmlspecialchars($value,ENT_QUOTES)."'>".($value)."</option>";

似乎htmlspecialchars($value)htmlentities($value)默认情况下都不会转换单引号',除非显式设置了ENT_QUOTES标志。

您应该在第二次使用$string时使用htmlspecialchar,以防止用"<"破坏html。在期权价值报价的内部,它足以取代单引号:

echo "<option value='".str_replace("'","&#039;",$string)."'>".htmlspecialchars($string)."</option>";

输出为:

<option value='AX èdfdfdèsèdsè&#039;/'"'>AX èdfdfdèsèdsè'/'&quot;</option>
echo '<option value="', htmlspecialchars($string), '">', htmlspecialchars($string), '</option>';

PHP不会逃避任何东西,除非你告诉它。;(