连接字符串时,PHP三元运算符错误

时间:2019-07-09 09:42:05

标签: php html ternary-operator shortcode

我实际上是将这个php代码转换为分配给var的字符串,这样我就可以在函数中返回它的值:

<?php if ($add_cta=='yes' ){?>
   <a class="button" href="<?php echo strip_tags(trim($a_href)); ?>">
     <?php echo strip_tags(trim($a_title)); ?>
   </a>
<?php } ?>

我已将以上内容转换为以下内容:

$html = '

($add_cta == "Yes" ? .
    ' < a class = "button" href = "'.strip_tags(trim($a_href)).
    '" > '.strip_tags(trim($a_title)).
    ' < /a>'. : "")
';

return $html;

但是变得意外。 ($add_cta == "Yes" ? .'

行出现错误

但这是连接字符串和php所必需的,对吗?我要去哪里了

3 个答案:

答案 0 :(得分:1)

您必须更正单引号的用法。特别是第一个和最后一个单引号不是必需的。 PHP不会在单引号内执行任何代码。您可以使用双引号,但这只会打印变量,并且与HTML结合使用会使情况变得更加复杂。以下代码使用正确的单引号:

$html = ($add_cta == "Yes" ? .
    '<a class="button" href="'.strip_tags(trim($a_href)).'">'.
    strip_tags(trim($a_title)).
    '</a>'. : '');
return $html;

或者仅使用if语句:

$html = '';
if ($add_cta == "Yes")
{
    $href = strip_tags(trim($a_href));
    $title = strip_tags(trim($a_title));
    $html .= ' <a class="button" href="'.$href.'">'.$title.'</a>';
}
return $html;

答案 1 :(得分:0)

尝试一下。您犯了一些我已解决的串联错误

$a_href = "stackoverflow.com";
$a_title = 'Anything';
$html = 

($add_cta == "Yes" ? 
    ' < a class = "button" href = "'.strip_tags(trim($a_href)) .
    '" > '.strip_tags(trim($a_title)) .
    ' < /a>' : "")
;

echo $html;

答案 2 :(得分:0)

我认为最简单/易读的方法是使用一个单独的模板,该模板返回呈现的链接。

link-template.php

<?php

return '<a href="' . strip_tags(trim($a_href)) . '">' . strip_tags(trim($a_title)) . '</a>';

您要在以下位置使用此模板的方法/函数:

return $add_cta === 'Yes' ? include 'link-template.php' : '';

您应该考虑的是在包含模板之前先定义$a_href$a_title