**:
heredoc技術,在正規的php文件中和技術書籍中一般沒有詳細講述,只是提到了這是一種perl風格的字串輸出技術。但是現在的一些論壇程式,和 部分文章系統,都巧妙的使用heredoc技術,來部分的實現了介面與**的準分離,phpwind模板就是乙個典型的例子。 如下:
<?php
header("content-type:text/html;charset=utf-8");
$name = '淺水遊';
print <<
12321;
hello,$name!
eot;
?>
1.以<<
2.位於開始標記和結束標記之間的變數可以被正常解析,但是函式則不可以。在heredoc中,變數不需要用連線符.或,來拼接,如下:
$v=2;
$a= <<
"abc"$v
"123"
eof;
echo $a; //結果連同雙引號一起輸出:"abc"2 "123"
3.heredoc常用在輸出包含大量html語法d文件的時候。比如:函式outputhtml()要輸出html的主頁。可以有兩種寫法。很明顯第二種寫法比較簡單和易於閱讀。
function outputhtml()
function outputhtml()
outputhtml();
heredoc句法結構:<<<。在該提示符後面,要定義個識別符號,然後是乙個新行。接下來是字串 本身,最後要用前面定義的識別符號作為結束標誌。
結束時所引用的識別符號必須在一行的開始位置, 而且,識別符號的命名也要像其它標籤一樣遵守php的規則:只能包含字母、數字和下劃線,並且不能用數字和下劃線作為開頭。
要注意的是結束識別符號這行除了 可能有乙個分號(;)外,絕對不能包括其它字元。這意味著識別符號不能縮排,分號的前後也不能有任何空白或tabs。更重要 的是結束識別符號的前面必須是個被本地作業系統認可的新行標籤,比如在unix和mac os x系統中是\n ,而結束識別符號(可能有個分號)的後面也必 須跟個新行標籤。
如果不遵守該規則導致結束標籤不「乾淨」,php將認為它不是結束識別符號而繼續尋找。如果在檔案結束前也沒有找到乙個正確的結束識別符號,php將會在最後一行產生乙個句法錯誤。
heredocs結構不能用來初始化class,而從php 5.3以後,則該限制只能用在包含變數的情況下。
example #1 非法的示例
<?php
class foo
?>
heredoc結構就象是沒有使用雙引號的雙引號字串, 這就是說在heredoc結構中引號不用被替換,但是上文中列出的字元 (\n等)也可使用。 變數將被替換,但在heredoc結構中字串表達複雜變數時,要格外小心。
example #2 heredoc結構的字串示例
<?php
$str = <<
example of string
spanning multiple lines
using heredoc syntax.
eod;
/* 含有變數的更複雜示例 */
class foo
}$foo = new foo();
$name = 'myname';
echo <<
my name is "$name". i am printing some $foo->foo.
now, i am printing some .
this should print a capital 'a': \x41
eot;
?>
以上例程會輸出:
my name is "myname". i am printing some foo.
now, i am printing some bar2.
this should print a capital 'a': a也可以把heredoc結構用在函式引數中來傳輸資料:
example #3 heredoc結構在引數中的示例
<?php
var_dump(array(<<
foobar!
eod));
?>
在php 5.3.0以後,也可以用heredoc結構來初始化靜態變數和類的屬性和常量:
example #4 使用heredoc結構來初始化靜態值
<?php
// 靜態變數
function foo()
// 類的常量、屬性
class foo
?>
在php 5.3.0中還在heredoc結構中用雙引號來宣告標誌符:
example #5 在heredoc結構中使用雙引號
<?php
echo <<<"foobar"
hello world!
foobar;
?>
定界符
1.php定界符的作用就是按照原樣,包括換行格式什麼的,輸出在其內部的東西;
2.在php定界符中的任何特殊字元都不需要轉義;
3.php定界符中的php變數會被正常的用其值來替換。
這個可以用來儲存大段的文字比較有用。
php定界符方便好用
定界符 另一種給字串定界的方法使用定界符語法 應該在 之後提供乙個識別符號,然後是字串,然後是同樣的識別符號結束字串。結束識別符號必須從行的第一列開始。同樣,識別符號也必須遵循 php 中其它任何標籤的命名規則 只能包含字母數字下劃線,而且必須以下劃線或非數字字元開始。警告 很重要的一點必須指出,結...
PHP中的定界符格式
nowdoc 單引號定界符 abc可以是任合內容,放在單引號中 c abc 這裡可以是任合內容 我是歷的苛奪基 本原則葉落歸根在運 輸費艱難田 abc echo c heredoc 雙引號定界符 abc可以是任合內容,放在雙引號中或是不加引號 c 這裡可以是任合內容 我是歷的苛奪基 本原則葉落歸根在...
php 定界符格式引起的錯誤
錯誤 parse error syntax error,unexpected end in h w程式設計客棧amp www testing test 2.1.4.php on line 16 錯誤源 複製 如下 str 測試字串 測kcxeuk試字串 測試字串 eod echo str 為定界符定...