我们有这样的代码:
echo '<input type="text" name="myInput" value="Double " Quotes" />';
Run Code Online (Sandbox Code Playgroud)
绝对不行,因为之后的报价 Double结束价值.我们可以使用单引号而不是双引号来修复它.
echo '<input type="text" name="myInput" value=\'Double " Quotes\' />';
Run Code Online (Sandbox Code Playgroud)
现在我想使用单引号和双引号作为值.它应该输出She said:"I don't know."
有没有办法在不使用HTML实体(Like ")htmlentities()或类似函数的情况下修复它?
hak*_*kre 10
有没有办法在不使用HTML实体(Like
")htmlentities()或类似函数的情况下修复它?
不,那里没有.双引号(")在HTML属性中具有特殊含义.如果你想把它放入一个属性值,你必须(这不是一个真正的必须,但一个很好的经验法则.如果你使用双引号分隔的属性,你必须像在你的问题中那样)将它写成它的实体".没有其他办法了.
实际上甚至<tag attr='this"'>没有错误的HTML,大多数浏览器也可以处理它.但是它对你没有帮助,因为你正在寻找引号 - 单引号和双引号 - 其中一个总是在HTML中是属性值的分隔符 - 如果在属性值中需要空格(就像你一样).
但是,不要担心.它有效,你可以用它来表达你喜欢的一切,包括你有的引用组合.
实际上,PHP可以让你承担"逃避"所有这些角色的负担,只需使用htmlspecialchars为你完成所有工作的方法.在PHP字符串中,你有原始文本 - 你认为合适的单引号和双引号 - 逐字.
$myString = 'She said: "I don\'t know."';
printf('<input type="text" name="myInput" value="%s" />'
, htmlspecialchars($myString));
Run Code Online (Sandbox Code Playgroud)
只是一个缩短的例子,应该证明这是如何工作的.在线演示.
| 归档时间: |
|
| 查看次数: |
15495 次 |
| 最近记录: |