-1

我不明白以下行中两个反斜杠的功能...

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>

删除两个反斜杠会导致“预期,或;” 上面粘贴的代码行出错。为什么是这样?

谢谢

4

4 回答 4

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>";

PHP:字符串文档

于 2013-03-14T21:14:13.350 回答
1

它们对引号进行转义,因此它们不计为实际引号 - 否则它们标记字符串的结尾,并且 HTML 的其余部分被视为 PHP 代码,这显然不起作用。

请参阅文档

于 2013-03-14T21:14:26.487 回答
0

因为"标记标记了字符串的开始和结束。如果要在字符串中包含引号,则必须使用反斜杠字符对其进行转义,否则它将被视为字符串的结尾,并且后面的内容在编码上下文中没有意义,因此会出现错误。

于 2013-03-14T21:14:52.943 回答
0

这是因为您只使用双引号。\ 是一个转义字符,它将允许 php 打印 " 而不假设它是引号的结尾。编写该行的更好方法可能是

  echo '<p style="font-family: $font; font-size: {$size}em;">Hello, world!</p>';
于 2013-03-14T21:15:11.400 回答