我不明白以下一行中两个反斜杠的功能......
echo "<p style=\"font-family: $font; font-size: {$size}em;\">Hello, world!</p>";
此代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Saying hello with style</title>
<link rel="stylesheet" type="text/css" href="common.css" />
</head>
<body>
<h1>Saying hello with style</h1>
<?php
function helloWithStyle( $font, $size ) {
echo "<p style=\"font-family: $font; font-size: {$size}em;\">Hello, world!</p>";
}
helloWithStyle( "Helvetica", 2 );
helloWithStyle( "Times", 3 );
helloWithStyle( "Courier", 1.5 );
?>
</body>
</html>
删除两个反斜杠会导致“期待,或者”;粘贴在上面的代码行上的错误。这是为什么?
谢谢
答案 0 :(得分:2)
反斜杠\
是一个转义字符,允许输出字符串而不会出错。
如果您使用双引号"
启动字符串,则下次使用双引号时,它将有效地结束字符串。这同样适用于引用字符串的单引号'
。
如果您使用双引号"
启动字符串,则可以在字符串中使用单引号'
而不转义引号,反之亦然。
使用您的代码段作为示例,这些都是等效的:
echo "<p style=\"font-family: $font; font-size: {$size}em;\">Hello, world!</p>";
echo '<p style="font-family: $font; font-size: {$size}em;">Hello, world!</p>';
echo "<p style='font-family: $font; font-size: {$size}em;'>Hello, world!</p>";
答案 1 :(得分:1)
他们转义引号,因此它们不算作实际引号 - 否则它们标记字符串的结尾,其余的HTML被视为PHP代码,这显然不起作用。
答案 2 :(得分:0)
因为"
标记表示字符串的开头和结尾。如果要在字符串中包含引号,则必须使用反斜杠字符对其进行转义,否则将其视为字符串的结尾,并且后面的内容在编码上下文中没有意义,因此会出错。
答案 3 :(得分:0)
这是因为你只使用双引号。 \是一个转义字符,允许php打印“不假设它是引用的结尾。更好的方法来写这行可能是
echo '<p style="font-family: $font; font-size: {$size}em;">Hello, world!</p>';