關於php的定界符,也就是heredoc技術

2021-06-26 23:25:07 字數 2571 閱讀 5580

**:

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 為定界符定...