假设$string = AX èdfdfdèsèdsè'/\"
(实际上,$string
从数据库中分配了此值)
所以当我打印以下内容时,
echo "<option value='". htmlspecialchars($string) ."'>".$string."</option>";
我得到了输出,
<option \"'="" value="AX èdfdfdèsèdsè">AX èdfdfdèsèdsè'/\"</option>
我怎样才能正确地逃避这一点,以便我不会创造另一个无用的属性&amp;而是获得与$string
中相同的值?
另外,Php没有逃脱$string
整体的原因是什么?
答案 0 :(得分:1)
另一个答案是使用htmlspecialchars($value,ENT_QUOTES)
所以基本上就是
echo "<option value='". htmlspecialchars($value,ENT_QUOTES)."'>".($value)."</option>";
除非明确设置htmlspecialchars($value)
标志,否则默认情况下htmlentities($value)
和'
都不会转换单引号ENT_QUOTES
。
答案 1 :(得分:0)
你应该在第二次使用$ string时使用htmlspecialchars,以防止使用&#34;&lt;&#34;来破坏html。在期权价值报价的内部,替换单引号就足够了:
echo "<option value='".str_replace("'","'",$string)."'>".htmlspecialchars($string)."</option>";
输出是:
<option value='AX èdfdfdèsèdsè'/\"'>AX èdfdfdèsèdsè'/\"</option>
答案 2 :(得分:0)
echo '<option value="', htmlspecialchars($string), '">', htmlspecialchars($string), '</option>';
除非您告诉PHP,否则PHP不会逃脱任何内容。 ;)