可能是一个新手,但我不能得到元名="描述"排工作。你应该关闭并打开PHP代码,如果它是嵌套的,对吗?
谢谢! /罗伯特
<?php
$blogname = get_bloginfo('name');
if ($blogname == 'Wobbling Willy') {
echo '<meta name="description" content="?><?php bloginfo('description'); ?><?php" />'."\n";
echo '<meta name="keywords" content=”keyword1, keyword2, keyword3” />'."\n";
}
?>
答案 0 :(得分:2)
我自己喜欢这种语法(使用混合HTML / PHP时)
<?php
$blogname = get_bloginfo('name');
if ($blogname == 'Wobbling Willy'): //-note- colon not semi-colon
?>
<meta name="description" content="<?= bloginfo('description'); ?>" />
<meta name="keywords" content=”keyword1, keyword2, keyword3” />
<?php endif; ?>
OR
<?php
$blogname = get_bloginfo('name');
if ($blogname == 'Wobbling Willy'){ //open bracket
?>
<meta name="description" content="<?= bloginfo('description'); ?>" />
<meta name="keywords" content=”keyword1, keyword2, keyword3” />
<?php } // close bracket?>
它更短,你不必担心引用。甚至使用heredoc
但这涉及将bloginfo('description')
设置为变量和其他一些怪癖......
<?php
$blogname = get_bloginfo('name');
if ($blogname == 'Wobbling Willy'){ //open bracket
$description = bloginfo('description');
echo <<<HTML
<meta name="description" content="$description" />
<meta name="keywords" content=”keyword1, keyword2, keyword3” />
HTML; //nothing can go here no space ( before or after ) and not even this comment, nothing but HTML; litterally
}
?>
HEREDOC是我的首选方式,但我从不在同一个文件中混用HTML和PHP。因为我使用模板系统。
答案 1 :(得分:1)
试试这个:
<?php
$blogname = get_bloginfo('name');
if ($blogname == 'Wobbling Willy') {
echo '<meta name="description" content="'.bloginfo('description').'"/>\n';
echo '<meta name="keywords" content="keyword1, keyword2, keyword3"/>\n';
}
?>
答案 2 :(得分:0)
在回答OP关于嵌套PHP标记的问题时,PHP开始和结束标记的嵌套仅适用于HTML代码中的,如下所示:
<div id="<?php echo $id; ?>">
注意:这种将HTML和PHP混合在一起的风格在几年前就更加流行了;如今这不被认为是最好的风格。相反,重点在于关注点的分离,如模型 - 视图 - 控制器设计模式所反映的那样。并且,在PHP中嵌套PHP代码不是要做的事情,并且可能会产生解析错误。
在修复代码的各种方法中,您可能希望查看使用live demo语法的heredoc。
OP的片段有趣的是它实际上没有嵌套在PHP代码中的任何PHP标记。事实上,如果你删除多余的标签,只允许一个开放标签,代码只需要稍微调整就可以工作,如下所示:
// these function implementations are just for demo purposes:
function get_bloginfo($n) {
return ("Wobbling Willy");
}
function bloginfo($d){
return("some lovely description ...");
}
$blogname = get_bloginfo('name');
if ($blogname == 'Wobbling Willy') {
echo '<meta name="description" content="';
echo bloginfo('description'),'"/>',"\n";
echo '<meta name="keywords" content="keyword1, keyword2, keyword3" />'."\n";
}
请参阅demo
除非作为函数或构造的参数提供,否则不会出现bloginfo()的返回值,例如 echo ,它将输出它。如果根据需要使用单引号,则在尴尬时拆分“description”元标记的显示将起作用。最后,卷曲引号可能会有问题,在这种情况下,我将用第二个元标记包含关键字的内容替换为第二个元标记的内容。