解释PHP中引用的PHP


Interpret PHP inside a quote in a PHP

我有一个变量$url,我需要在带引号的HTML中打印它,如果有条件的话,它在PHP中。

<?php 
$url = $thumb['0']; 
if ( in_category( 'News' )) {
    //nothing here
} else {
    echo '<div class="image-holder"><img src="$url;" alt="Post photo" class="image-border"></div>';
}
?>

但是src="$url;"在HTML代码中被解释为src="$url;"。它不解释为变量。

我该如何解决?

您可以在php 中用点连接字符串

例如

echo "This"."is"."a"."sample";

同样有变量:

    echo '<div class="image-holder"><img src="'.$url.'" alt="Post photo" class="image-border"></div>';

在PHP中处理字符串时,实现单引号和双引号字符串之间的区别非常重要。

  • 单引号字符串基本上被解析为文字字符串,而不管您可能使用什么"特殊"字符。唯一的转义序列是用于文字单引号的''和用于文字反斜杠的''。PHP代码被视为简单文本,像'n(unix换行符的序列)这样的转义序列也是如此。这是用于"Hello World!"等简单字符串文字的格式
  • 双引号字符串被完全解析,这意味着'n被解释为换行符,$var被替换为变量$var的值。所以这要强大得多,但你也必须更多地考虑如何解释你的字符串。如果您解释的php变得复杂(或者与看起来像php的非php相邻),您可以使用大括号来澄清您的意思

请注意,有很多理由不将字符串与php代码混合使用。通常sprintf、heredoc或简单的串联(与.)会让事情变得更清楚,正如其他几个答案所建议的那样。

我喜欢将业务逻辑与输出分离。这与PHP用于控制结构的替代语法相结合,可以保持HTML输出的简洁性和可读性。

参见此示例:

<?php
// Do some things here
$url = $thumb['0'];
// Below this point we output HTML
// Only use simple control structures here, this keeps your HTML clean and easy to read
?>
<?php if (in_category('News')): ?>
<?php else: ?>
<div class="image-holder"><img src="<?php echo $url; ?>" alt="Post photo" class="image-border">
</div>
<?php endif; ?>

由于if语句的第一部分是空的,因此可以简化代码:

<?php if (!in_category('News')): ?>
<div class="image-holder"><img src="<?php echo $url; ?>" alt="Post photo" class="image-border">
</div>
<?php endif; ?>

使用双引号并将变量括在curley大括号中示例

echo "This is my variable. It equals {$var}";

你可以这样做

echo '<div class="image-holder"><img src="'.$url.'" alt="Post photo" class="image-border"></div>';

echo "<div class='image-holder'><img src='$url' alt='Post photo' class='image-border'></div>";

如果你需要处理大部分HTML,并且不想从双引号改为单引号[HTML规范在技术上不允许],或者不想跳过所有的双引号[屁股疼],或者不断进出<?php ?>标签[丑陋,难以维护],那么就使用HEREDOC。例如:

echo <<<_end_
<div class="image-holder"><img src="$url;" alt="Post photo" class="image-border"></div>
_end_;

变量被扩展,不需要转义引号,你所有的梦想都会实现。

或者,您可以坚持使用单引号字符串,并使用printf(),这本身就是一个非常有用的函数。例如:

printf('<div class="image-holder"><img src="%s;" alt="Post photo" class="image-border"></div>', $url);

这样做,(编辑:简化代码)

<?php 
$url = $thumb['0']; 
if ( ! in_category( 'News' ) ) {?>
    <div class="image-holder">
       <img src="<?=$url?>" alt="Post photo" class="image-border" />
    </div>
<?}?>