我有一个变量$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>
<?}?>