我们有这样的代码:
echo '<input type="text" name="myInput" value="Double " Quotes" />';
绝对不行,因为Double结束后的引用值.
我们可以使用单引号而不是双引号来修复它.
echo '<input type="text" name="myInput" value=\'Double " Quotes\' />';
现在我想使用单引号和双引号作为值.它应该输出她说:“我不知道.”
有没有办法解决它没有使用HTML实体(像& quot;),htmlentities()或类似的功能?
解决方法:
Is there a way to fix it WITHOUT using HTML entities (Like
"
),htmlentities()
or similar functions?
不,那里没有.双引号(“)在HTML属性中具有特殊含义.如果你想将它放入一个属性值,你必须(这不是一个真正的必须,但一个很好的经验法则.如果你使用由分隔的属性,这是必须的.你在问题中使用双引号)把它写成它的实体& quot;.没有办法绕过它.
实际上即使< 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));
只是一个缩短的例子,应该证明这是如何工作的. Online demo.