欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

php字符串的定義方式有哪些

本文小編為大家詳細(xì)介紹“php字符串的定義方式有哪些”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“php字符串的定義方式有哪些”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。

站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到沐川網(wǎng)站設(shè)計(jì)與沐川網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國(guó)際域名空間、網(wǎng)頁(yè)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋沐川地區(qū)。

有4種定義方式:1、用單引號(hào)包裹字符,語(yǔ)法“'字符內(nèi)容'”;2、用雙引號(hào)包裹字符,語(yǔ)法“"字符內(nèi)容"”;3、用heredoc結(jié)構(gòu),語(yǔ)法“<<<EOF 字符內(nèi)容 EOF;”;4、用nowdoc結(jié)構(gòu),語(yǔ)法“<<<'EOD' 字符內(nèi)容 EOD;”。Nowdoc和heredoc類(lèi)似,但它中不進(jìn)行變量解析操作;這種結(jié)構(gòu)很適合用于嵌入PHP代碼或其它大段文本而無(wú)需對(duì)其中的特殊字符進(jìn)行轉(zhuǎn)義。

php字符串的定義方式有哪些

本教程操作環(huán)境:windows7系統(tǒng)、PHP8.1版、DELL G3電腦

字符串是連續(xù)的字符序列,在其它語(yǔ)言中,字符和字符串是兩種不同的數(shù)據(jù)類(lèi)型,但在 PHP 中,統(tǒng)一將字符和字符串當(dāng)作字符串?dāng)?shù)據(jù)類(lèi)型。

在 PHP 中,定義字符串有4種方式,分別是單引號(hào)方式、雙引號(hào)方式、Heredoc 方式、nowdoc 方式。

“單引號(hào)”定義方式

定義一個(gè)字符串的最簡(jiǎn)單的方法是用單引號(hào)把它包圍起來(lái)(字符 ')。

要表達(dá)一個(gè)單引號(hào)自身,需在它的前面加個(gè)反斜線(xiàn)(\)來(lái)轉(zhuǎn)義。要表達(dá)一個(gè)反斜線(xiàn)自身,則用兩個(gè)反斜線(xiàn)(\\)。其它任何方式的反斜線(xiàn)都會(huì)被當(dāng)成反斜線(xiàn)本身:也就是說(shuō)如果想使用其它轉(zhuǎn)義序列例如 \r 或者 \n,并不代表任何特殊含義,就單純是這兩個(gè)字符本身。

注意: 不像雙引號(hào)和 heredoc 語(yǔ)法結(jié)構(gòu),在單引號(hào)字符串中的變量和特殊字符的轉(zhuǎn)義序列將不會(huì)被替換。

示例:

<?php
echo 'this is a simple string';
echo '<br>';

// 可以錄入多行
echo 'You can also have embedded newlines in
strings this way as it is
okay to do';
echo '<br>';

// 輸出: Arnold once said: "I'll be back"
echo 'Arnold once said: "I\'ll be back"';
echo '<br>';

// 輸出: You deleted C:\*.*?
echo 'You deleted C:\\*.*?';
echo '<br>';

// 輸出: You deleted C:\*.*?
echo 'You deleted C:\*.*?';
echo '<br>';

// 輸出: This will not expand: \n a newline
echo 'This will not expand: \n a newline';
echo '<br>';

// 輸出: Variables do not $expand $either
echo 'Variables do not $expand $either';
echo '<br>';
?>

php字符串的定義方式有哪些

“雙引號(hào)”定義方式

如果字符串是包圍在雙引號(hào)(")中, PHP 將對(duì)以下特殊的字符進(jìn)行解析:

轉(zhuǎn)義字符
序列含義
\n換行(ASCII 字符集中的 LF 或 0x0A (10))
\r回車(chē)(ASCII 字符集中的 CR 或 0x0D (13))
\t水平制表符(ASCII 字符集中的 HT 或 0x09 (9))
\v垂直制表符(ASCII 字符集中的 VT 或 0x0B (11))
\eEscape(ASCII 字符集中的 ESC 或 0x1B (27))
\f換頁(yè)(ASCII 字符集中的 FF 或 0x0C (12))
\\反斜線(xiàn)
\$美元標(biāo)記
\"雙引號(hào)
\[0-7]{1,3}符合該正則表達(dá)式序列的是一個(gè)以八進(jìn)制方式來(lái)表達(dá)的字符,which silently overflows to fit in a byte        (e.g. "\400" === "\000")
\x[0-9A-Fa-f]{1,2}符合該正則表達(dá)式序列的是一個(gè)以十六進(jìn)制方式來(lái)表達(dá)的字符
\u{[0-9A-Fa-f]+}匹配正則表達(dá)式的字符序列是 unicode 碼位,        該碼位能作為 UTF-8 的表達(dá)方式輸出字符串

和單引號(hào)字符串一樣,轉(zhuǎn)義任何其它字符都會(huì)導(dǎo)致反斜線(xiàn)被顯示出來(lái)。

用雙引號(hào)定義的字符串最重要的特征是變量會(huì)被解析,即變量解析。

示例:

<?php
echo "this is a simple string";
echo "<br>";

// 也可以錄入多行
echo "You can also have embedded newlines in
strings this way as it is
okay to do";
?>

php字符串的定義方式有哪些

“Heredoc”定義方式

第三種表達(dá)字符串的方法是用 heredoc 句法結(jié)構(gòu):<<<。在該運(yùn)算符之后要提供一個(gè)標(biāo)識(shí)符,然后換行。接下來(lái)是字符串 string 本身,最后要用前面定義的標(biāo)識(shí)符作為結(jié)束標(biāo)志。

結(jié)束標(biāo)識(shí)符可以使用空格或制表符(tab)縮進(jìn),此時(shí)文檔字符串會(huì)刪除所有縮進(jìn)。 在 PHP 7.3.0 之前的版本中,結(jié)束時(shí)所引用的標(biāo)識(shí)符必須在該行的第一列。

而且,標(biāo)識(shí)符的命名也要像其它標(biāo)簽一樣遵守 PHP 的規(guī)則:只能包含字母、數(shù)字和下劃線(xiàn),并且必須以字母和下劃線(xiàn)作為開(kāi)頭。

<?php
$str = <<<EOF
  url:
  http://www.chinadenli.net/
EOF;
echo $str;
?>

php字符串的定義方式有哪些

PHP 7.3.0 之后的基礎(chǔ) Heredoc 示例

<?php
// 無(wú)縮進(jìn)
echo <<<END
      a
     b
    c
\n
END;
// 4 空格縮進(jìn)
echo <<<END
      a
     b
    c
    END;

php字符串的定義方式有哪些

如果結(jié)束標(biāo)識(shí)符的縮進(jìn)超過(guò)內(nèi)容的任何一行的縮進(jìn),則將拋出 ParseError 異常:

示例:結(jié)束標(biāo)識(shí)符的縮進(jìn)不能超過(guò)正文的任何一行

<?php
echo <<<END
  a
 b
c
   END;

以上例程在 PHP 7.3 中的輸出:

PHP Parse error:  Invalid body indentation level (expecting an indentation level of at least 3) in example.php on line 4

制表符也可以縮進(jìn)結(jié)束標(biāo)識(shí)符,但是,關(guān)于縮進(jìn)結(jié)束標(biāo)識(shí)符和內(nèi)容, 制表符和空格不能混合使用。在以上任何情況下, 將會(huì)拋出 ParseError 異常。 之所以包含這些空白限制,是因?yàn)榛旌现票矸涂崭駚?lái)縮進(jìn)不利于易讀性。

示例:內(nèi)容(空白)和結(jié)束標(biāo)識(shí)符的不同縮進(jìn)

<?php
// 以下所有代碼都不起作用。
// 正文(空格)和結(jié)束標(biāo)記(制表符),不同的縮進(jìn)
{
    echo <<<END
     a
        END;
}
// 在正文中混合空格和制表符
{
    echo <<<END
        a
     END;
}
// 在結(jié)束標(biāo)記中混合空格和制表符
{
    echo <<<END
          a
         END;
}

以上例程在 PHP 7.3 中的輸出:

PHP Parse error:  Invalid indentation - tabs and spaces cannot be mixed in example.php line 8

內(nèi)容字符串的結(jié)束標(biāo)識(shí)符后面不需要跟分號(hào)或者換行符。 例如,從 PHP 7.3.0 開(kāi)始允許以下代碼:

示例:在結(jié)束標(biāo)識(shí)符后繼續(xù)表達(dá)式

<?php
$values = [<<<END
a
  b
    c
END, 'd e f'];
var_dump($values);

以上例程在 PHP 7.3 中的輸出:

array(2) {
  [0] =>
  string(11) "a
  b
    c"
  [1] =>
  string(5) "d e f"
}

“Nowdoc”定義方式

就象 heredoc 結(jié)構(gòu)類(lèi)似于雙引號(hào)字符串,Nowdoc 結(jié)構(gòu)是類(lèi)似于單引號(hào)字符串的。Nowdoc 結(jié)構(gòu)很象 heredoc 結(jié)構(gòu),但是 nowdoc 中不進(jìn)行解析操作。這種結(jié)構(gòu)很適合用于嵌入 PHP 代碼或其它大段文本而無(wú)需對(duì)其中的特殊字符進(jìn)行轉(zhuǎn)義。與 SGML 的 <![CDATA[ ]]> 結(jié)構(gòu)是用來(lái)聲明大段的不用解析的文本類(lèi)似,nowdoc 結(jié)構(gòu)也有相同的特征。

一個(gè) nowdoc 結(jié)構(gòu)也用和 heredocs 結(jié)構(gòu)一樣的標(biāo)記 <<<, 但是跟在后面的標(biāo)識(shí)符要用單引號(hào)括起來(lái),即 <<<'EOT'。Heredoc 結(jié)構(gòu)的所有規(guī)則也同樣適用于 nowdoc 結(jié)構(gòu),尤其是結(jié)束標(biāo)識(shí)符的規(guī)則。

示例:

<?php
echo <<<'EOD'
Example of string spanning multiple lines
using nowdoc syntax. Backslashes are always treated literally,
e.g. \\ and \'.
EOD;

php字符串的定義方式有哪些

<?php

/* 含有變量的更復(fù)雜的示例 */
class foo
{
    public $foo;
    public $bar;

    function __construct()
    {
        $this->foo = 'Foo';
        $this->bar = array('Bar1', 'Bar2', 'Bar3');
    }
}

$foo = new foo();
$name = 'MyName';

echo <<<'EOT'
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should not print a capital 'A': \x41
EOT;
?>

php字符串的定義方式有哪些

注意:

Nowdoc 結(jié)構(gòu)是在 PHP 5.3.0 中加入的。

擴(kuò)展知識(shí):變量解析

當(dāng)字符串用雙引號(hào)或 heredoc 結(jié)構(gòu)定義時(shí),其中的變量將會(huì)被解析。

這里共有兩種語(yǔ)法規(guī)則:一種簡(jiǎn)單規(guī)則,一種復(fù)雜規(guī)則。簡(jiǎn)單的語(yǔ)法規(guī)則是最常用和最方便的,它可以用最少的代碼在一個(gè) string 中嵌入一個(gè)變量,一個(gè) array 的值,或一個(gè) object 的屬性。

復(fù)雜規(guī)則語(yǔ)法的顯著標(biāo)記是用花括號(hào)包圍的表達(dá)式。

簡(jiǎn)單語(yǔ)法

當(dāng) PHP 解析器遇到一個(gè)美元符號(hào)($)時(shí),它會(huì)和其它很多解析器一樣,去組合盡量多的標(biāo)識(shí)以形成一個(gè)合法的變量名。可以用花括號(hào)來(lái)明確變量名的界線(xiàn)。

<?php
$juice = "apple";

echo "He drank some $juice juice.".PHP_EOL;
// Invalid. "s" is a valid character for a variable name, but the variable is $juice.
echo "He drank some juice made of $juices.";
// Valid. Explicitly specify the end of the variable name by enclosing it in braces:
echo "He drank some juice made of ${juice}s.";
?>

php字符串的定義方式有哪些

類(lèi)似的,一個(gè) array 索引或一個(gè) object 屬性也可被解析。數(shù)組索引要用方括號(hào)(])來(lái)表示索引結(jié)束的邊際,對(duì)象屬性則是和上述的變量規(guī)則相同。

<?php
$juices = array("apple", "orange", "koolaid1" => "purple");

echo "He drank some $juices[0] juice.".PHP_EOL;
echo "He drank some $juices[1] juice.".PHP_EOL;
echo "He drank some $juices[koolaid1] juice.".PHP_EOL;

class people {
    public $john = "John Smith";
    public $jane = "Jane Smith";
    public $robert = "Robert Paulsen";

    public $smith = "Smith";
}

$people = new people();

echo "$people->john drank some $juices[0] juice.".PHP_EOL;
echo "$people->john then said hello to $people->jane.".PHP_EOL;
echo "$people->john's wife greeted $people->robert.".PHP_EOL;
echo "$people->robert greeted the two $people->smiths."; // Won't work
?>

php字符串的定義方式有哪些

從 PHP 7.1.0 起,還支持負(fù)數(shù)字索引。

<?php
$string = 'string';
echo "The character at index -2 is $string[-2].", PHP_EOL;
$string[-3] = 'o';
echo "Changing the character at index -3 to o gives $string.", PHP_EOL;
?>

php字符串的定義方式有哪些

如果想要表達(dá)更復(fù)雜的結(jié)構(gòu),請(qǐng)用復(fù)雜語(yǔ)法。

復(fù)雜(花括號(hào))語(yǔ)法

復(fù)雜語(yǔ)法不是因?yàn)槠湔Z(yǔ)法復(fù)雜而得名,而是因?yàn)樗梢允褂脧?fù)雜的表達(dá)式。

任何具有 string 表達(dá)的標(biāo)量變量,數(shù)組單元或?qū)ο髮傩远伎墒褂么苏Z(yǔ)法。 表達(dá)式的書(shū)寫(xiě)方式與在 string 以外的方式相同, 然后用花括號(hào) { 和 } 把它括起來(lái)即可。由于 { 無(wú)法被轉(zhuǎn)義,只有 $ 緊挨著 { 時(shí)才會(huì)被識(shí)別。可以用 {\$ 來(lái)表達(dá) {$。下面的示例可以更好的解釋?zhuān)?/p>

<?php
// 顯示所有錯(cuò)誤
error_reporting(E_ALL);

$great = 'fantastic';

// 無(wú)效,輸出: This is { fantastic}
echo "This is { $great}";

// 有效,輸出: This is fantastic
echo "This is {$great}";

// 有效
echo "This square is {$square->width}00 centimeters broad.";

// 有效,只有通過(guò)花括號(hào)語(yǔ)法才能正確解析帶引號(hào)的鍵名
echo "This works: {$arr['key']}";

// 有效
echo "This works: {$arr[4][3]}";

// 這是錯(cuò)誤的表達(dá)式,因?yàn)榫拖?nbsp;$foo[bar] 的格式在字符串以外也是錯(cuò)的一樣。
// 換句話(huà)說(shuō),只有在 PHP 能找到常量 foo 的前提下才會(huì)正常工作;這里會(huì)產(chǎn)生一個(gè)
// E_NOTICE (undefined constant) 級(jí)別的錯(cuò)誤。
echo "This is wrong: {$arr[foo][3]}";

// 有效,當(dāng)在字符串中使用多重?cái)?shù)組時(shí),一定要用括號(hào)將它括起來(lái)
echo "This works: {$arr['foo'][3]}";

// 有效
echo "This works: " . $arr['foo'][3];

echo "This works too: {$obj->values[3]->name}";

echo "This is the value of the var named $name: {${$name}}";

echo "This is the value of the var named by the return value of getName(): {${getName()}}";

echo "This is the value of the var named by the return value of \$object->getName(): {${$object->getName()}}";

// 無(wú)效,輸出: This is the return value of getName(): {getName()}
echo "This is the return value of getName(): {getName()}";

// 無(wú)效, 輸出: C:\folder\{fantastic}.txt
echo "C:\folder\{$great}.txt"
// 有效, 輸出: C:\folder\fantastic.txt
echo "C:\\folder\\{$great}.txt"
?>

也可以在字符串中用此語(yǔ)法通過(guò)變量來(lái)調(diào)用類(lèi)的屬性。

<?php
class foo {
    var $bar = 'I am bar.';
}

$foo = new foo();
$bar = 'bar';
$baz = array('foo', 'bar', 'baz', 'quux');
echo "{$foo->$bar}\n";
echo "{$foo->{$baz[1]}}\n";
?>

php字符串的定義方式有哪些

注意:

函數(shù)、方法、靜態(tài)類(lèi)變量和類(lèi)常量可使用 {$} ,在該字符串被定義的命名空間中將其值作為變量名來(lái)訪問(wèn)。只單一使用花括號(hào) ({}) 無(wú)法處理從函數(shù)或方法的返回值或者類(lèi)常量以及類(lèi)靜態(tài)變量的值。

讀到這里,這篇“php字符串的定義方式有哪些”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站名稱(chēng):php字符串的定義方式有哪些
分享網(wǎng)址:http://www.chinadenli.net/article48/jcochp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃商城網(wǎng)站關(guān)鍵詞優(yōu)化移動(dòng)網(wǎng)站建設(shè)品牌網(wǎng)站建設(shè)網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化