php字元串的定義
⑴ 字元串的16、php中介紹
string是一系列字元。在 php 中,字元和位元組一樣,也就是說,一共有 256 種不同字元的可能性。這也暗示 php 對 Unicode 沒有本地支持。請參閱函數utf8_encode()和utf8_decode()以了解有關 Unicode 支持
注:一個字元串變得非常巨大也沒有問題,php 沒有給字元串的大小強加實現范圍,所以完全沒有理由擔心長字元串。
語法
字元串可以用三種字面上的方法定義。
單引號
雙引號
定界符 指定一個簡單字元串的最簡單的方法是用單引號(字元 ')括起來。
要表示一個單引號,需要用反斜線(/)轉義,和很多其它語言一樣。如果在單引號之前或字元串結尾需要出現一個反斜線,需要用兩個反斜線表示。注意如果試圖轉義任何其它字元,反斜線本身也會被顯示出來!所以通常不需要轉義反斜線本身。
注:在 php 3 中,此情況下將發出一個 E_NOTICE 級的警告。
注:和其他兩種語法不同,單引號字元串中出現的變數和轉義序列不會被變數的值替代。
<?phpecho 'this is a simple string';echo 'You can also have embedded newlines instrings this way as it isokay to do';// Outputs: Arnold once said: I'll be backecho 'Arnold once said: I/'ll be back';// Outputs: You deleted C:/*.*?echo 'You deleted C://*.*?';// Outputs: You deleted C:/*.*?echo 'You deleted C:/*.*?';// Outputs: This will not expand: /n a newlineecho 'This will not expand: /n a newline';// Outputs: Variables do not $expand $eitherecho 'Variables do not $expand $either';?>
此外,如果試圖轉義任何其它字元,反斜線本身也會被顯示出來!
雙引號字元串最重要的一點是其中的變數名會被變數值替代。細節參見字元串解析。 另一種給字元串定界的方法使用定界符語法(「<<<」)。應該在 <<< 之後提供一個標識符,然後是字元串,然後是同樣的標識符結束字元串。
結束標識符必須從行的第一列開始。同樣,標識符也必須遵循 php 中其它任何標簽的命名規則:只能包含字母數字下劃線,而且必須以下劃線或非數字字元開始。
例子 11-3. 非法的例子
<?phpclass foo { public $bar = <<<EOTbarEOT;}?>
定界符文本表現的就和雙引號字元串一樣,只是沒有雙引號。這意味著在定界符文本中不需要轉義引號,不過仍然可以用以上列出來的轉義代碼。變數會被展開,但當在定界符文本中表達復雜變數時和字元串一樣同樣也要注意。
例子 11-4. 定界符字元串例子
<?php$str = <<<EODExample of stringspanning multiple linesusing heredoc syntax.EOD;/* More complex example, with variables. */class foo{ var $foo; var $bar; function foo() { $this->foo = 'Foo'; $this->bar = array('Bar1', 'Bar2', 'Bar3'); }}$foo = new foo();$name = 'MyName';echo <<<EOTMy name is $name. I am printing some $foo->foo.Now, I am printing some {$foo->bar[1]}.This should print a capital 'A': /x41EOT;?>注:定界符支持是 php 4 中加入的。 當用雙引號或者定界符指定字元串時,其中的變數會被解析。
有兩種語法,一種簡單的和一種復雜的。簡單語法最通用和方便,它提供了解析變數,數組值,或者對象屬性的方法。
復雜語法是 php 4 引進的,可以用花括弧括起一個表達式。
簡單語法如果遇到美元符號($),解析器會盡可能多地取得後面的字元以組成一個合法的變數名。如果想明示指定名字的結束,用花括弧把變數名括起來。
<?php$beer = 'Heineken';echo $beer's taste is great; // works, ' is an invalid character for varnamesecho He drank some $beers; // won't work, 's' is a valid character for varnamesecho He drank some ${beer}s; // worksecho He drank some {$beer}s; // works?>
同樣也可以解析數組索引或者對象屬性。對於數組索引,右方括弧(])標志著索引的結束。對象屬性則和簡單變數適用同樣的規則,盡管對於對象屬性沒有像變數那樣的小技巧。
<?php// These examples are specific to using arrays inside of strings.// When outside of a string, always quote your array string keys// and do not use {braces} when outside of strings either.// Let's show all errorserror_reporting(E_ALL);$fruits = array('strawberry' => 'red', 'banana' => 'yellow');// Works but note that this works differently outside string-quotesecho A banana is $fruits[banana].;// Worksecho A banana is {$fruits['banana']}.;// Works but php looks for a constant named banana first// as described below.echo A banana is {$fruits[banana]}.;// Won't work, use braces. This results in a parse error.echo A banana is $fruits['banana'].;// Worksecho A banana is . $fruits['banana'] . .;// Worksecho This square is $square->width meters broad.;// Won't work. For a solution, see the complex syntax.echo This square is $square->width00 centimeters broad.;?>
對於任何更復雜的情況,應該使用復雜語法。
復雜(花括弧)語法不是因為語法復雜而稱其為復雜,而是因為用此方法可以包含復雜的表達式。
事實上,用此語法可以在字元串中包含任何在名字空間的值。僅僅用和在字元串之外同樣的方法寫一個表達式,然後用 { 和 } 把它包含進來。因為不能轉義「{」,此語法僅在 $ 緊跟在 { 後面時被識別(用「{/$」或者「/{$」來得到一個字面上的「{$」)。用一些例子可以更清晰:
<?php// Let's show all errorserror_reporting(E_ALL);$great = 'fantastic';// 不行,輸出為:This is { fantastic}echo This is { $great};// 可以,輸出為:This is fantasticecho This is {$great};echo This is ${great};// Worksecho This square is {$square->width}00 centimeters broad.;// Worksecho This works: {$arr[4][3]};// This is wrong for the same reason as $foo[bar] is wrong// outside a string. In otherwords, it will still work but// because php first looks for a constant named foo, it will// throw an error of level E_NOTICE (undefined constant).echo This is wrong: {$arr[foo][3]};// Works. When using multi-dimensional arrays, always use// braces around arrays when inside of stringsecho This works: {$arr['foo'][3]};// Works.echo This works: . $arr['foo'][3];echo You can even write {$obj->values[3]->name};echo This is the value of the var named $name: {${$name}};?>
訪問和修改字元串中的字元
字元串中的字元可以通過在字元串之後用花括弧指定所要字元從零開始的偏移量來訪問和修改。
注:為了向下兼容,仍然可以用方括弧。不過此語法自 php 4 起已過時。
例子 11-5. 一些字元串例子
<?php// Get the first character of a string$str = 'This is a test.';$first = $str{0};// Get the third character of a string$third = $str{2};// Get the last character of a string.$str = 'This is still a test.';$last = $str{strlen($str)-1};// Modify the last character of a string$str = 'Look at the sea';$str{strlen($str)-1} = 'e';?> 字元串可以用「.」(點)運算符連接。注意這里不能用「+」(加)運算符。更多信息參見字元串運算符。
有很多實用函數來改變字元串。
普通函數見字元串函數一節,高級搜索和替換見正則表達式函數(兩種風格:Perl 和 POSIX 擴展)。
還有 URL 字元串函數,以及加密/解密字元串的函數(mcrypt 和 mhash)。
最後,如果還是找不到想要的函數,參見字元類型函數。 可以用 (string) 標記或者strval()函數將一個值轉換為字元串。當某表達式需要字元串時,字元串的轉換會在表達式范圍內自動完成。例如當使用echo()或者print()函數時,或者將一個變數值與一個字元串進行比較的時候。閱讀手冊中有關類型和類型戲法中的部分有助於更清楚一些。參見settype()。
布爾值TRUE將被轉換為字元串 1,而值FALSE將被表示為 (即空字元串)。這樣就可以隨意地在布爾值和字元串之間進行比較。
整數或浮點數數值在轉換成字元串時,字元串由表示這些數值的數字字元組成(浮點數還包含有指數部分)。
數組將被轉換成字元串 Array,因此無法通過echo()或者print()函數來輸出數組的內容。請參考下文以獲取更多提示。
對象將被轉換成字元串 Object。如果因為調試需要,需要將對象的成員變數列印出來,請閱讀下文。如果希望得到該對象所依附的類的名稱,請使用函數get_class()。自 php 5 起,如果合適可以用 __toString() 方法。
資源類型總是以 Resource id #1 的格式被轉換成字元串,其中 1 是 php 在運行時給資源指定的唯一標識。如果希望獲取資源的類型,請使用函數get_resource_type()。
NULL將被轉換成空字元串。
正如以上所示,將數組、對象或者資源列印出來,並不能提供任何關於這些值本身的有用的信息。請參閱函數print_r()和var_mp(),對於調試來說,這些是更好的列印值的方法。
可以將 php 的值轉換為字元串以永久地儲存它們。這種方法被稱為序列化,可以用函數serialize()來完成該操作。如果在安裝 php 時建立了 WDDX 支持,還可以將 php 的值序列化為 XML 結構。 當一個字元串被當作數字來求值時,根據以下規則來決定結果的類型和值。
如果包括「.」,「e」或「E」其中任何一個字元的話,字元串被當作float來求值。否則就被當作整數。
該值由字元串最前面的部分決定。如果字元串以合法的數字數據開始,就用該數字作為其值,否則其值為 0(零)。合法數字數據由可選的正負號開始,後面跟著一個或多個數字(可選地包括十進制分數),後面跟著可選的指數。指數是一個「e」或者「E」後面跟著一個或多個數字。
<?php$foo = 1 + 10.5; // $foo is float (11.5)$foo = 1 + -1.3e3; // $foo is float (-1299)$foo = 1 + bob-1.3e3; // $foo is integer (1)$foo = 1 + bob3; // $foo is integer (1)$foo = 1 + 10 Small Pigs; // $foo is integer (11)$foo = 4 + 10.2 Little Piggies; // $foo is float (14.2)$foo = 10.0 pigs + 1; // $foo is float (11)$foo = 10.0 pigs + 1.0; // $foo is float (11)?>
此轉換的更多信息見 Unix 手冊中關於 strtod(3) 的部分。
如果想測試本節中的任何例子,可以拷貝和粘貼這些例子並且加上下面這一行自己看看會發生什麼:
<?phpecho /$foo==$foo; type is . gettype ($foo) . <br />/n;?>
不要指望在將一個字元轉換成整型時能夠得到該字元的編碼(可能也會在 C 中這么做)。如果希望在字元編碼和字元之間轉換,請使用ord()和chr()函數。
⑵ 單引號和雙引號在PHP代碼中用法有什麼不同
在PHP中,字元串的定義可以使用單引號,也可以使用雙引號。但是必須使用同一種單或雙引號來定義字元串,如:『Hello"和「Hello'為非法的字元串定義。
定義字元串時,只有一種引號被視為定義符,即單引號或雙引號。於是,如果一個字元串由雙引號開始,那麼只有雙引號被分析器解析。這樣,就可以在雙引號串中包含任何其他字元,甚至單引號。下面的引號串都是合法的:
$s = "I am a 'single quote string' inside a double quote string";
$s = 'I am a "double quote string" inside a single quote string';
$s = "I am a 'single quote string' inside a double quote string";
$s = 'I am a "double quote string" inside a single quote string';
PHP允許我們在雙引號串中直接包含字串變數,單引號串和雙引號串在PHP中的處理是不相同的。雙引號串中的內容可以被解釋而且替換,而單引號串中的內容總被認為是普通字元。例如如下代碼:
$foo = 2;
echo "foo is $foo"; // 列印結果: foo is 2
echo 'foo is $foo'; // 列印結果: foo is $foo
echo "foo is $foo\n"; // 列印結果: foo is 2 (同時換行)
echo 'foo is $foo\n'; // 列印結果: foo is $foo\n
$foo = 2;
echo "foo is $foo"; // 列印結果: foo is 2
echo 'foo is $foo'; // 列印結果: foo is $foo
echo "foo is $foo\n"; // 列印結果: foo is 2 (同時換行)
echo 'foo is $foo\n'; // 列印結果: foo is $foo\n
在單引號串中甚至反斜杠也失去了他的擴展含義(除了插入反斜杠\\和插入單引號\')。所以,當想在字串中進行變數代換和包 含\n(換行符)等轉義序列時,應該使用雙引號。單引號串可以用在其他任何地方,腳本中使用單引號串處理速度會更快些,因為PHP語法分析器對單引號串 的處理方式比較單純,而雙引號的處理由於串內部也需要解析,因此更復雜些,所以處理速度略慢。 技術問題可到itjob技術交流群交流
⑶ PHP:給字元串定界是什麼意思
php定界符("<<<EOT"):給字元串定界的方法使用定界符語法(「<<<」)。應該在
<<< 之後提供一個標識符,然後是字元串,然後是同樣的標識符結束字元串。
結束標識符必須從行的第一列開始。同樣,標識符也必須遵循 PHP
中其它任何標簽的命名規則:只能包含字母數字下劃線,而且必須以下劃線或非數字字元開始。
<?php
/*******************
日期:2010-10-12
功能:定界符
*******************/
//定義字元串
$p="string(字元串):是一個字元串,PHP對字元串可以用三種方法定義單引號、雙引號、定界符;";
//定界符的使用方式
$string=<<<EOT
<html>
<head>
<title></title>
</head>
<body>
<p style="width:500px;border:1px solid #ccc;">{$p}<p>
</body>
</html>
EOT;//警告:很重要的一點必須指出,結束標識符所在的行不能包含任何其它字元,可能除了一個分號(;)之外。這尤其意味著該標識符不能被縮
進,而且在分號之前和之後都不能有任何空格或製表符。同樣重要的是要意識到在結束標識符之前的第一個字元必須是你的操作系統中定義的換行符。
echo $string;
//註:單引號、雙引號、php定界符("<<<EOT")在實際應用中可以混使用的,單引號、雙引號在程序中定義一些不連續的
字元串,而定界符主要針對大段的html的,使用定界符,插標簽的方式,不會打亂html代碼的順序,方便調試。不能用定界符語法初始化類成員。用其它字
符串語法替代。
?>
⑷ php strptime定義和用法
PHP中的strptime()函數是一個關鍵工具,用於解析由strftime()生成的日期/時間格式。它的主要任務是將一個字元串按照特定的格式進行解析,以便於後續的處理和存儲。
strptime()函數的基本語法如下:
array strptime(date, format)
其中,參數date是需要解析的字元串,通常來源於strftime()函數的結果。format參數則是定義了date的結構,它必須與strftime()中使用的格式完全一致。
值得注意的是,strptime()的處理結果會受到系統當前區域設置(通過setlocale()函數設定的LC_TIME)的影響。例如,月份和星期幾的名稱會根據用戶的語言環境進行翻譯。如果解析過程中遇到與指定格式不符的部分,這部分內容將被存儲在unparsed date單元中。
解析後的結果是一個數組,包含了詳細的日期和時間信息,包括:
- tm_sec:當前分鍾內的秒數(0-61)
- tm_min:當前小時內的分鍾數(0-59)
- tm_hour:從午夜開始的小時數(0-23)
- tm_mday:月份中的第幾天(1-31)
- tm_mon:自一月以來經過的月份數(0-11)
- tm_year:自1900年以來經過的年數
- tm_wday:自星期天開始經過的天數(0-6)
- tm_yday:本年自1月1日以來經過的天數(0-365)
如果解析過程中遇到任何錯誤,strptime()函數將返回 FALSE,此時需要進行錯誤檢查和處理。
⑸ PHP中有幾種主要的數據類型,通俗的解釋一下他們
數據類型有三種:
1.標量數據類型
標量數據類型包括以下幾種。
(1)boolean:布爾型
布爾變數是PHP變數中最簡單的。它保存一個True或者False值。其中True或者False是PHP的內部關鍵字。設定一個布爾型的變數,只需將True或者False賦值給該變數
(2)string:字元串
字元串是連續的字元序列,字元串中的每個字元只佔用一個位元組。在PHP中,定義字元串有3種方式:
單引號方式,
雙引號方式,
Heredoc方式。
(3)integer:整數
整數數據類型只能包含整數。這些數據類型可以是正數或負數。在32位的操作系統中,有效的范圍是−2 147 483 648~+2 147 483 647。
(4)double:浮點數
浮點數據類型可以用來存儲數字,也可以保存小數。它提供的精度不整數大得多。在32位的操作系統中,有效的范圍是1.7E-308~1.7E+308。
2.復合數據類型
復合數據類型包括以下兩種。
(1)array:數組
可以是二維、三維或者多維,數組中的各元素可以是string、integer或double,也可以是array。
(2)object:對象類型
3.特殊數據類型
特殊數據類型包括以下兩種。
(1)resource:資源
資源是PHP內的幾個函數所需要的特殊數據類型,由編程人員來分配。
(2)null:空值
空值是最簡單的數據類型。表示沒有為該變數設置任何值,另外,空值(NULL)不區分大小寫。
⑹ 怎樣把php數組轉換成字元串,phpimplode
使用PHP中的implode函數可以將數組轉換為字元串。
在PHP中,數組是一種特殊的數據類型,用於存儲多個值。而字元串則是由字元組成的連續序列。當需要將數組中的元素連接成一個字元串時,可以使用PHP內置的implode函數。
implode函數的使用方法:
1. 函數定義:`implode: string`
2. 參數說明:
* `$glue`:用於連接數組元素的字元串。默認為空字元串。
* `$pieces`:要連接的數組元素。必須是一個數組。
3. 功能描述:該函數將數組的元素連接成一個字元串。數組元素之間由指定的字元串分隔。如果省略$glue,數組元素之間將沒有分隔符。
示例代碼:
假設有一個包含若干元素的數組 `$arr`,想要將其轉換為字元串,可以使用以下代碼:
php
$arr = array;
$str = implode; // 使用空格作為分隔符連接數組元素
echo $str; // 輸出結果為:"Hello World !"
在上述代碼中,`implode`函數將數組`$arr`中的元素使用空格連接起來,並將結果賦值給變數`$str`。然後可以通過`echo`語句輸出這個字元串。通過這種方式,可以輕松地將數組轉換為字元串進行後續處理或輸出顯示。