簡體   English   中英

在 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;" 被解釋為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 代碼混合的原因有很多。 正如其他幾個答案中所建議的那樣,通常sprintfheredoc或簡單的連接(使用. )會使事情變得更加清晰。

我喜歡將業務邏輯與輸出分開。 這與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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM