假设$string = AX èdfdfdèsèdsè'/'"
(实际上,$string
是从DB分配的(
所以当我打印以下内容时,
echo "<option value='". htmlspecialchars($string) ."'>".$string."</option>";
我得到输出,
<option '"'="" 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("'","'",$string)."'>".htmlspecialchars($string)."</option>";
输出为:
<option value='AX èdfdfdèsèdsè'/'"'>AX èdfdfdèsèdsè'/'"</option>
echo '<option value="', htmlspecialchars($string), '">', htmlspecialchars($string), '</option>';
PHP不会逃避任何东西,除非你告诉它。;(