單引號、雙引號與定界符——PHP
單引號與雙引號
單引號和雙引號在echo輸出時的區別
echo輸出時,如果使用單引號,那麼echo會把單引號之間的全部內容當成普通字串輸出,不能識別變數和轉義字元(單引號串中的內容總被認為是普通字元)
1 $str1 = "Hello"; 2 echo '$str1<br/>';
執行結果:
echo輸出時,如果使用雙引號,那麼echo會識別雙引號之間的變數和轉義字元
1 $str1 = "Hello"; 2 echo '$str1<br/>'; 3 echo "$str1<br/>";
執行結果:
在上面的測試程式碼中,給$str1變數賦值的內容只有普通字元,所以使用單引號和雙引號賦值的作用時一樣的
------------------------------------------------------
單引號和雙引號在給變數賦值時的區別
1 $str1 = "Hello"; 2 $str2 = '$str1 my friend'; 3 $str3 = "$str1 my friend"; 4 echo "$str2<br/>"; 5 echo "$str3<br/>";
執行結果:
-----------------------------------------------------
PHP語法分析器是用成對的引號來判斷一個字串的。因此,所有字串必須使用同一種單或者雙引號來定義開始和結束,也就是說可以在雙引號中包含單引號,單引號中包含雙引號
1 /* 雙引號中包含單引號 和 單引號中包含雙引號 */ 2 $str6 = "Maybe today 'maybe tomorrow'"; 3 $str7 = 'Maybe today "maybe tomorrow"'; 4 echo "$str6<br/>"; 5 echo "$str7<br/>";
執行結果:
如果想在單引號中包含單引號,雙引號中包含雙引號,則需要使用轉義符\
1 /* 在雙引號中包含雙引號 */ 2 $str8 = "Who How What \"Why\" No"; 3 echo "$str8<br/>"; 4 5 /* 在單引號中包含單引號 */ 6 $str9 = 'Who How What \'Why\' No'; 7 echo "$str9<br/><br/>";
執行結果:
定界符
使用格式:
1 <<<EOF 2 ````` 3 EOF;
簡單來說定界符的作用有:
1.PHP定界符的作用就是按照原樣,包括換行格式什麼的,輸出在其內部的東西
2.在PHP定界符中的任何特殊字元都不需要轉義
3.PHP定界符中的PHP變數會被識別,並用變數本身的值替換
(從上面三條可以看出定界符和雙引號非常相似)
使用定界符注意事項:
1、EOF 可以用任意其它字元代替,只需保證結束標識與開始標識一致,並且開始標記和結束標記不在正文中出現即可(意思是可以寫成如下形式)
<<<TODAY ````` TODAY;
2、結束標識必須頂格獨自佔一行(即必須從行首開始,前後不能銜接任何空白和字元)
正確的示例:
1 $str1 = 'Hello'; 2 echo <<<EOF 3 {$str1} 4 EOF;
執行結果:
錯誤的示例:
1 $str1 = 'Hello'; 2 echo <<<EOF 3 {$str1} 4 EOF;
執行結果:
3、開始標識可以不帶引號或帶單雙引號,不帶引號與帶雙引號效果一致,解釋內嵌的變數和轉義符號,帶單引號則不解釋內嵌的變數和轉義符號
第一部分:不帶引號與帶雙引號效果一致
1 $str1 = 'Hello'; 2 echo <<<EOF 3 {$str1} 4 EOF; 5 6 $str2 = 'Hi'; 7 echo <<<"EOF" 8 {$str2} 9 EOF;
執行結果:
第二部分:帶單引號則不解釋內嵌的變數和轉義符號
1 $str1 = 'Hello'; 2 echo <<<'EOF' 3 {$str1}\n 4 EOF;
執行結果:
4、當內容需要內嵌引號(單引號或雙引號)時,不需要加轉義符,本身對單雙引號轉義
1 $str1 = 'Hello'; 2 echo <<<EOF 3 {$str1}"Hi"'Yo' 4 EOF;
執行結果:
定界符與雙引號
當需要用echo輸出大量的html和js程式碼時,定界符的優勢便體現出來了,以html為例,當echo輸出的html程式碼中含有單引號或雙引號時,如果使用普通的雙引號輸出,則需要手動的新增轉義符(\)來保證語法不會出錯,如果使用定界符則不需要手動新增轉義符,測試程式碼如下
使用echo""輸出html程式碼
1 echo "<a href=\"https://www.baidu.com\">此連線使用了href屬性</a><br/>";
執行結果:
在上面程式碼中,如果不對html程式碼中的雙引號新增轉義符,則會報錯
使用echo定界符輸出html程式碼
1 echo <<<EOF 2 <a href="https://www.baidu.com">此連線使用了href屬性</a><br/> 3 EOF;
執行效果:
————————————————————————————
編輯器:Notepad++
環境:WampServer Version 3.1.9 64bit
PHP Version:7.3.5&n