PHP嵌套变量在回显的字符串中,最后包含一个HTML标记

时间:2013-08-14 07:38:32

标签: php string if-statement

需要php帮助

我需要在html标签

中添加if语句
if( get_field($image) ):
    ?><img src="<?php the_field($image); ?>" alt="" /><?php
endif;

我想在下面的html标签中添加if语句来代替img和a,这可能吗?

 echo 

    "<$html class=\"" .(!empty($this->options['class']) ? trim($thesis->api->esc($this->options['class'])) : ''). "\">  

 // I want this if statement to work inside here...how do i escape the html to make it work?

if( get_field($image) ):
        ?><img src="<?php the_field($image); ?>" alt="" /><?php
    endif;


    <img src=\"" .get_field($image)."\" alt=\"\" /> 
     <a href=\"".get_field($download). "\"> Download File</a> 

    </$html>\n";

1 个答案:

答案 0 :(得分:2)

将PHP运算符放在HTML

首先,不要使用echo语句吐出大量的HTML,这使得代码很难维护和重用。这不容易吗?

<a href='<?php echo $some_variable; ?>'>

在HTML块中使用PHP逻辑(常规)

你正在寻找这样的东西:

<?php if(!empty($image)): ?>
    <img src='<?php echo $image; ?>' alt='Some Stuff'>
<?php endif; ?>

这是一个名为ternary operator的简称等效词,可能更容易在代码中阅读:

<?php echo empty($image) ? null : "<img src='$image' alt='Some Stuff'>"; ?>

如果$image有值,则会回显图像标记,如果没有,则回显图像标记。

让我们清理一下修复原始帖子中的代码...

您的代码看起来像是故意混淆以混淆人们。学会缩进,不要在逻辑中嵌入逻辑。优先考虑可读性,您的代码将更容易维护。

if(!empty($text)) 
        echo 

"<$html class=\"" .(!empty($this->options['class']) ? trim($thesis->api->esc($this->options['class'])) : ''). "\">  

<img src=\"" .get_field($image)."\" alt=\"\" />  " .get_field($text)." 
<a href=\"".get_field($download). "\"> Download File</a> 

</$html>\n";

这里有很多可以改进的地方。首先,尽可能将业务逻辑从显示逻辑中分离出来:

业务逻辑

<?php
    // This should be in another FILE ideally...
    $this->divClass = empty($this->options['class']) ? null : trim($thesis->api->esc($this->options['class']));
    $this->image    = the_field($image);
    $this->download = the_field($download);
    $this->text     = // I dont know how you're setting this.
?>

显示逻辑

接下来,丢失get_field个功能,如果找不到,则null返回the_field,这样就可以获得更清晰的代码。然后,只需使用这样的东西:

<?php if(!isset($this->text)): ?>
    <div class='<?php echo $divClass; ?>'>
    <?php if(!isset($this->image) && !isset($this->download)): ?>
        <img src='<?php echo $this->image; ?>'>
        <a href='<?php echo $this->download; ?>'>Download File</a>
    <?php endif; ?>
    </div>
<?php endif; ?>

<?php>标签可以帮助您,它们允许您使用HTML代码干净地插入PHP代码,大多数语言都必须采用丑陋的外部诱惑。使用它们,保持代码的可读性和易懂性,不要走捷径,因为它们会回来咬你。