[英]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;"
被解釋為src="$url;"
在 HTML 代碼中。 它不會解釋為變量。
我該如何解決?
你可以在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; ?>
使用雙引號並將變量括在花括號示例中
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>
<?}?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.