2010-09-16 63 views
2

可以做到這一點 - 打開一個PHP標籤的變量,然後關閉PHP標籤,但保持變量打開,所以下面的一切都變成了變量的值?或者PHP可變大小/字符有限制嗎?PHP - 可以將一長串HTML包裝在PHP變量中嗎?

<?php $content = " ?> 

a bunch of content goes here <br /> 
with lots of HTML tags and JS scripts 

<?php "; ?> 

回答

4

你的代碼要做的是在變量$content中存儲一個以?>開始並以<?php結尾的字符串。這可能不是你想要做的?如果你稍後回顯這樣的字符串,你很可能會因爲這些php標籤而出錯。

正如在其他答案中提到的,heredoc將是一個解決方案,但一般來說,你應該儘量避免這種情況,你必須在變量中存儲非常長的html序列。而是使用視圖文件並在其中注入一些動態內容或使用某種包含。

所以,這取決於你真正想做的事,你的選擇是:使用視圖

  1. 定界符
  2. $content = "<html>markup here</html>";
  3. 通過輸出緩衝
  4. (尋找有關MVC模式的信息,你也可以做一個VC開始)
  5. 使用包括
+0

1和3可以工作。我想避免2.你能指點我一個關於使用視圖的好教程嗎? – 2010-09-16 13:07:17

+0

如果你開始使用MVC,CodeIgniter是一個非常好的和輕量級的框架。 – DMin 2010-09-16 14:18:12

6

您可以使用HEREDOC/NOWDOC

$content = <<< 'HTML' 

a bunch of content goes here <br /> 
with lots of HTML tags and JS scripts 

HTML; 

output buffering,例如

<?php ob_start(); ?> 

foo 

<?php 
    $var = ob_get_clean(); 
    var_dump($var); // will contain foo and surrounding whitespace 
6

沒有,但你也許可以做一些它與heredoc

$content = <<< END 
some content here<br/> 
<script type="text/javascript"> 
alert('hi'); 
</script> 

END; 
+1

NO是正確的答案。 – 2010-09-16 12:56:13

+0

雖然php.net上的例子和我見過的一些語法檢查器指出了這一點,但PHP不介意在那裏有空格,但可能希望刪除第一行的'<<<'和'END'之間的空格 – 2016-01-15 16:37:08

+0

@MichaelThompson: https://3v4l.org/k414A – Fanis 2016-02-04 16:29:00

0

嘗試:

<?php ob_start(); ?> 

.... html 

<? 
$content = ob_get_clean(); 
?> 

的細節

+0

這有效,但在大多數情況下,最好使用HEREDOC方法。 – Spudley 2010-09-16 12:43:55

0

是的,你可以做到這一點見http://pl.php.net/manual/en/book.outcontrol.php

雙引號內的結束標記爲:" ?>"將不會被專門處理。它們只是字符串內容。

對PHP可變大小/字符有限制嗎?

不可以。您可以儘可能多地填充變量,直到內存已滿。

+0

這是採取代碼字面值,但我不認爲這是OP想要做的,是嗎? – Gordon 2010-09-16 12:50:27

+1

對我來說不是很清楚。這是我推斷的。 – codaddict 2010-09-16 12:55:14

1

$content = 'large amount of text';

$content = 'text';
$content .= 'other text';
$content .= 'end text';

相關問題