在PHP中的引用中解释PHP

时间:2013-12-10 23:53:56

标签: php html

我有这个变量$ 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;”。它不会解释为变量。

我该如何解决?

7 个答案:

答案 0 :(得分:1)

你可以用php中的点连接字符串

e.g

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

同样有变量:

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

答案 1 :(得分:1)

在PHP中使用字符串时,重要的是要实现单引号和双引号字符串之间的区别。

  • Single-quoted strings基本上被解析为文字字符串,无论您使用什么“特殊”字符。对于文字单引号,唯一的转义序列为\',对于文字反斜杠,\\。 PHP代码被视为简单文本,因此转义序列如\n(unix换行符的序列)也是如此。这是用于简单字符串文字的格式,如“Hello World!”。
  • Double-quoted strings被完全解析,意味着\n被解释为换行符,$var被替换为变量$var的值。所以这更强大,但您还必须更多地考虑如何解释字符串。如果您解释的php变得复杂(或者与非php相邻,可能看起来像php),您可以use braces澄清您的意思。

请注意,有许多理由不将字符串与PHP代码混合使用。通常sprintfheredoc或简单连接(使用.)可以使事情更清晰,正如其他几个答案中所建议的那样。

答案 2 :(得分:0)

使用双引号并用花括号示例

包围变量
echo "This is my variable. It equals {$var}";

答案 3 :(得分:0)

我喜欢从输出中分离业务逻辑。这与PHP's alternative syntax for control structures结合使用,可以保持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; ?>

答案 4 :(得分:0)

你可以这样做

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>";

答案 5 :(得分:0)

如果您需要处理大部分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);

答案 6 :(得分:-1)

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

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