-2

我在里面有以下php代码我网站的一部分。

这是一个非常简单的代码,它添加了元名称 robots、wmt 工具验证元和 rss 元。

它工作正常,但有一件事:

当我使用 IE 或 Fireforx 查看页面的源代码时,我看不到元数据之间的新行。它们在一行中一个接一个地显示。

如何添加新行?有任何想法吗?如果我让他们这样,会有什么问题吗?

这是代码:

if((is_home() && $currentpage == 1) || (is_single() && $title != 'Online' && $title != 'Cam') || (is_category() && $robots == 'y')){
        echo '<meta name="robots" content="index,follow"/>';   
    } else {
        echo '<meta name="robots" content="noindex,follow"/>';
    } 
    if(get_option('enable_wmt') == 'y'){
        echo '<meta name="google-site-verification" content="'.get_option('wmt').'"/>';
    }
    if (is_home() && $currentpage == 1){
        echo '<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="'.$site_current.'/feed/"/>';
    }
4

1 回答 1

6

好吧,实际上原因很简单,就是您没有指定任何换行符。如果要生成换行符,也必须输出换行符,就像其他所有内容一样。

我通常使用这种语法,因为它不会使代码不可读:

if((is_home() && $currentpage == 1) || (is_single() && $title != 'Online' && $title != 'Cam') || (is_category() && $robots == 'y')){
        echo '<meta name="robots" content="index,follow"/>'."\n";   
    } else {
        echo '<meta name="robots" content="noindex,follow"/>'."\n";
    } 
    if(get_option('enable_wmt') == 'y'){
        echo '<meta name="google-site-verification" content="'.get_option('wmt').'"/>'."\n";
    }
    if (is_home() && $currentpage == 1){
        echo '<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="'.$site_current.'/feed/"/>'."\n";
    }

说明:序列\n是单个换行符的描述。无法直接输入字符有两个原因:

  1. 它是一个空白,因此编辑人员很难处理

  2. “正常”换行符在语言语法中具有特殊含义。

在 php 中使用该换行符时,您必须将其括在双引号 ( ") 中。只有当包含在双引号中时,这样的特殊字符才会被 php.ini 解释。如果您使用单引号 ( '),这些序列将保持未解释状态。这是一个不时派上用场的区别......在这种情况下,它可以帮助我们坚持简单易读的方式,即如何将要输出的字符串移交给 echo 命令。我们使用冒号 ( .) 连接两个字符串,并使用双引号来解释特殊字符序列。

为了完整起见,另一个注意事项:在不同的情况下,有不同的方式来指定换行符。最值得注意的是,这是由不同的操作系统处理的。经典的 unix 系统(因此也是 Linux)使用上面引用的字符(\n十六进制表示法中的 0x10),MS-Windows 使用两个字符来指定单个换行符:(\n\r十六进制 0x10 0x13,或换行符和回车)。旧的 MacOS 系统再次使用了不同的东西,尽管当前的 MacOSX 系统也是基于 unix 的。由于互联网传统上属于 unix 领域(已在类似 unix 的系统下开发和增强),因此在互联网技术的许多部分都可以发现和预期类似 unix 的行为。

于 2012-11-18T12:54:26.027 回答