1,從 HTML 中分離
凡是在一對開始和結束標記之外的內容都會被 PHP 解析器忽略,這使得 PHP 檔案可以具備混合內容。 可以使 PHP 嵌入到 HTML 文檔中去,如下例所示。
This is going to be ignored by PHP and displayed by the browser.
This will also be ignored by PHP and displayed by the browser.
這將如預期中的運行,因為當 PHP 解譯器碰到 ?> 結束標記時就簡單地將其後內容原樣輸出(除非馬上緊接換行 - 見指令分隔字元)直到碰到下一個開始標記;
例外是處於條件陳述式中間時,此時 PHP 解譯器會根據條件判斷來決定哪些輸出,哪些跳過。
見下例,注意if 和 else 後面的 : 冒號
使用條件結構:
This will show if the expression is true.
Otherwise this will show.
上例中 PHP 將跳過條件陳述式未達成的段落,即使該段落位於 PHP 開始和結束標記之外。
由於 PHP 解譯器會在條件未達成時直接跳過該段條件陳述式塊,(:?> 跳出了 PHP 模式並返回了 HTML 模式) 因此 PHP 會根據條件來忽略之。
要輸出大段文本時,跳出 PHP 解析模式通常比將文本通過 echo 或 print 輸出更有效率。
getData())):?>
--------------------------------------------------------------------------------
2,指令分隔字元
一段 PHP 代碼中的結束標記隱含表示了一個分號
在一個 PHP 程式碼片段中的最後一行可以不用分號結束
如果後面還有新行,則程式碼片段的結束標記包含了行結束。
echo "This is a test";
?>
Note:
檔案末尾的 PHP 程式碼片段結束標記可以不要
有些情況下當使用 include 或者 require 時省略掉會更好些,這樣不期望的空白符就不會出現在檔案末尾,之後仍然可以輸出響應標題。
在使用輸出緩衝時也很便利,就不會看到由包含檔案產生的不期望的空白符。
342432353
otherwise this will show.
或者
342432353
otherwise this will show.
--------------------------------------------------------------------------------
PHP注釋
echo "This is a test"; // This is a one-line c++ style comment
/* This is a multi line comment
yet another line of comment */
echo "This is yet another test";
echo 'One Final Test'; # This is a one-line shell-style comment
?>
單行注釋僅僅注釋到行末或者當前的 PHP 代碼塊,視乎哪個首先出現。
這意味著在 // ... ?> 或者 # ... ?> 之後的 HTML 程式碼將被顯示出來
:?> 跳出了 PHP 模式並返回了 HTML 模式,// 或 # 並不能影響到這一點。
C 風格的注釋在碰到第一個 */ 時結束。
/*
echo "This is a test"; /* This comment will cause a problem */
*/
echo 'kdfjal';
?>
將報錯,輸出空白
--------------------------------------------------------------------------------
String 字串
一個字串 string 就是由一系列的字元組成,其中每個字元等同於一個位元組。這意味著 PHP 只能支援 256=2的8次方 的字元集,因此不支援 Unicode 。詳見字串類型詳解。
Note: string 最大可以達到 2GB。
文法
一個字串可以用 4 種方式表達:
單引號
雙引號
heredoc 文法結構
nowdoc 文法結構(自 PHP 5.3.0 起)
--------------------------------------------------------------------------------
單引號
定義一個字串的最簡單的方法是用單引號把它包圍起來(字元 ')。
要表達一個單引號自身,需在它的前面加個反斜線(\)來轉義。
要表達一個反斜線自身,則用兩個反斜線(\\)。
其它任何方式的反斜線都會被當成反斜線本身:也就是說如果想使用其它逸出序列例如 \r 或者 \n,並不代表任何特殊含義,就單純是這兩個字元本身。
Note: 不像雙引號和 heredoc 文法結構,在單引號字串中的變數和特殊字元的逸出序列將不會被替換。
echo 'this is a simple string';
// 可以錄入多行
echo 'You can also have embedded newlines in
strings this way as it is
okay to do';
// 輸出: Arnold once said: "I'll be back"
echo 'Arnold once said: "I\'ll be back"';
// 輸出: You deleted C:\*.*?
echo 'You deleted C:\\*.*?';
// 輸出: You deleted C:\*.*?
echo 'You deleted C:\*.*?';
// 輸出: This will not expand: \n a newline
echo 'This will not expand: \n a newline';
// 輸出: Variables do not $expand $either
echo 'Variables do not $expand $either';
?>
--------------------------------------------------------------------------------
雙引號
如果字串是包圍在雙引號(")中, PHP 將對一些特殊的字元進行解析:
逸出字元
序列 含義
\n 換行(ASCII 字元集中的 LF 或 0x0A (10))
\r 斷行符號(ASCII 字元集中的 CR 或 0x0D (13))
\t 水平定位字元(ASCII 字元集中的 HT 或 0x09 (9))
\v 垂直定位字元(ASCII 字元集中的 VT 或 0x0B (11))(自 PHP 5.2.5 起)
\e Escape(ASCII 字元集中的 ESC 或 0x1B (27))(自 PHP 5.4.0 起)
\f 換頁(ASCII 字元集中的 FF 或 0x0C (12))(自 PHP 5.2.5 起)
\\ 反斜線
\$ 美元標記
\" 雙引號
\[0-7]{1,3} 符合該Regex序列的是一個以八進位方式來表達的字元
\x[0-9A-Fa-f]{1,2} 符合該Regex序列的是一個以十六進位方式來表達的字元
和單引號字串一樣,轉義任何其它字元都會導致反斜線被顯示出來。PHP 5.1.1 以前,\{$var} 中的反斜線還不會被顯示出來。
用雙引號定義的字串最重要的特徵是變數會被解析,詳見變數解析。
--------------------------------------------------------------------------------
Heredoc 結構
第三種表達字串的方法是用 heredoc 句法結構:<<<。在該運算子之後要提供一個標識符,然後換行。接下來是字串 string 本身,最後要用前面定義的標識符作為結束標誌。
結束時所引用的標識符必須在該行的第一列,而且,標識符的命名也要像其它標籤一樣遵守 PHP 的規則:只能包含字母、數字和底線,並且必須以字母和底線作為開頭。
http://www.bkjia.com/PHPjc/477459.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/477459.htmlTechArticle1,從 HTML 中分離 凡是在一對開始和結束標記之外的內容都會被 PHP 解析器忽略,這使得 PHP 檔案可以具備混合內容。 可以使 PHP 嵌入到 HTML...