【问题标题】:Backslash characters in PHP [closed]PHP中的反斜杠字符[关闭]
【发布时间】:2013-03-03 10:53:39
【问题描述】:

看不懂下一行两个反斜杠的作用……

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>

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

谢谢

【问题讨论】:

  • 这根本不算太窄。答案将提供一个可能是个谜的一般概念......在传递它们时,反冲在 url 中何时以及做什么。

标签: php styles inline backslash


【解决方案1】:

反斜杠\ 是转义字符,允许字符串无错误地输出。

如果你用双引号"开始一个字符串,下次你使用双引号时,它会有效地结束这个字符串。这同样适用于单引号 ' 来开始一个字符串。

如果您使用双引号 " 开始一个字符串,您可以在字符串中使用单引号 ' 而无需转义引号,反之亦然。

以你的 sn-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>';

echo "<p style='font-family: $font; font-size: {$size}em;'>Hello, world!</p>";

PHP: Strings Documentation

【讨论】:

  • 为什么需要内联样式组件周围的引号(无论是单引号还是双引号)?
  • @Prestonblah 因为他们是?您在 HTML 中需要它们,因此在输出 HTML 的 PHP 中需要它们。
  • @Kolink 常量不在字符串中查找。因此,代码不会被解释为包含否则可能会返回错误的常量。除了您所说的事实之外,这也是原因之一。
【解决方案2】:

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

documentation

【讨论】:

  • 谢谢,我现在明白是怎么回事了。
【解决方案3】:

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

【讨论】:

  • 谢谢,我明白了。
【解决方案4】:

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

  echo '<p style="font-family: $font; font-size: {$size}em;">Hello, world!</p>';

【讨论】:

  • 感谢您的建议和解释。现在说得通了。
猜你喜欢
  • 2016-01-01
  • 2011-11-23
  • 1970-01-01
  • 2019-11-19
  • 2011-05-18
  • 2018-02-27
  • 2011-06-13
  • 2012-09-12
  • 2015-08-11
相关资源
最近更新 更多