我在尝试使用双引号(" ...")替换单引号(' ...")时遇到了一些麻烦代码:
php -r 'print sprintf("%s%s%s", "<cite>", preg_replace("!<[^>]+>!","", "<cite>Quote from <a href=\"/page.php\" class=\"link\">Testuser » 29.09.2016 15:08</a>:</cite>"), "</cite>");'
每当我尝试用双打替换单引号时,代码就会中断,我似乎无法找到不同的解决方案。我被告知根本不使用单引号 - 这是一个例外吗?
感谢任何帮助。
答案 0 :(得分:4)
您无法在由"
个字符分隔的HTML属性值中使用文字"
。它会过早地终止属性值。
您可以将其中一个包含为"
,但这会使代码难以阅读。
<img id="image" src="images/bird.jpg" onmouseover="PlaySound("mySound"); this.src="images/bird_second_frame.jpg"" onmouseout="StopSound("mySound"); this.src="images/bird.jpg"">
我被告知根本不使用单引号 - 这是一个例外吗?
没有。你刚收到了不好的建议。
JavaScript和HTML不区分'
和"
,除非确定哪些字符可以显示在它们之间而不进行转义。
在您的示例中使用'
更具可读性。
更好的方法是完全避免使用内联JavaScript。
<img id="image"
src="images/bird.jpg"
data-sound="mySound"
data-frame="images/bird_second_frame.jpg">
<script>
var element = document.getElementById("image");
element.addEventListener("onmouseover", play);
element.addEventListener("onmouseover", stop);
function play() {
PlaySound(this.dataset.sound);
this.dataset.original = this.src;
this.src = this.dataset.frame;
}
function stop() {
StopSound(this.dataset.sound);
this.src = this.dataset.original;
}
</script>
答案 1 :(得分:3)
你不能在由双引号限定的字符串中使用双引号,因为它们会结束字符串。
在这种情况下,您使用单引号是合适的。
答案 2 :(得分:1)
您可以在JavaScript中自由使用单引号;它们在语法上等同于双引号字符(尽管任何单个字符串常量必须由相同类型的引号绑定)。这也适用于HTML,所以你可以通过使用属性值分隔符的单引号在JavaScript中获得双引号:
<button onclick='alert("Hello World")'>Click Me</button>
但是,如果你真的想要双引号,你可以将它们作为HTML实体转义:
<button onclick="alert("Hello World")">Click Me</button>
这很丑陋但它确实有效:HTML解析器专门寻找引号字符。
最好的要做的是停止在HTML中嵌入JavaScript事件处理程序设置,并使用JavaScript完全执行。