我的代码存在问题。我很确定它与报价有关。让我演示一下。
这很好用:
<?php if ( $is_latest_post ) echo '
hello world
'; ?>
这不起作用:
<?php if ( $is_latest_post ) echo '
<a class="recent<?php $category = get_the_category(); echo $category[0]->category_nicename; ?>" href="<?php bloginfo('url'); ?>/<?php echo $category[0]->category_nicename; ?>"><?php echo $category[0]->cat_name; ?></a>
'; ?>
为什么不起作用?我可以改变什么才能使它发挥作用?代码的a class
部分完全在if ( $is_latest_post )
语句之外。感谢我刚开始用PHP学习编码。
答案 0 :(得分:6)
当您将字符串封装在单引号中时,它会将该字符串视为文字。 PHP不会解析该字符串中的代码。
您需要的是连接。点运算符.
允许您将多个字符串混合在一起。
<?
if ( $is_latest_post ) {
$category = get_the_category();
echo '
<a class="recent' . $category[0]->category_nicename . '" href="' . bloginfo('url') . '/'. $category[0]->category_nicename . '">' . $category[0]->cat_name . '</a>';
}
?>
你可以将任意多个事物连接在一起。
<?
$a = 1;
$b = 2.0;
$c = 'string';
$d = function_call();
$string = $a . $b . 'random text' . $c . $d;
?>
答案 1 :(得分:1)
<?
if ( $is_latest_post ) {
$category = get_the_category();
echo "<a class=\"recent" . $category[0]->category_nicename . "href=\"" . bloginfo('url') . "/". $category[0]->category_nicename. "\">" .$category[0]->cat_name."</a>";
}
?>
除了Kevin的回答,我更喜欢使用双引号而不是单引号,并在需要时将其转义。
答案 2 :(得分:1)
您无法在字符串文字中执行php代码。浏览器不会显示空标记,因为它们中没有任何内容可以呈现。
答案 3 :(得分:0)
您正在使用单引号作为初学者。这永远不会评估任何PHP代码 - 它只会打印出来。
编辑:如果blogInfo()返回一个字符串(返回$ somevar),请使用下面的代码。
<?php
if ( $is_latest_post )
{
$category = get_the_category();
$template = '<a class="recent%s" href="%s/%s">%s</a>';
$blogInfo = bloginfo('url');
echo sprintf(
$template,
$category[0]->category_nicename,
$bloginfo,
$category[0]->category_nicename,
$category[0]->cat_name
);
}
?>
如果blogInfo()在屏幕上回显数据(echo $ somevar),请使用下面的代码。
<?php
if ( $is_latest_post )
{
$category = get_the_category();
$prefix = '<a class="recent%s" href="';
$suffix = '/%s">%s</a>';
echo sprintf(
$prefix,
$category[0]->category_nicename,
);
bloginfo('url');
echo sprintf(
$suffix,
$category[0]->category_nicename,
$category[0]->cat_name
);
}
?>
sprintf允许您在模板中“注入”变量。
我强烈建议您重新访问您的代码并尝试尽可能简单。在表示层(即回声)中进行一系列赋值和函数调用将使您的代码很难理解和维护。