字串是許多程式語言(包括PHP)中的基本標量型別之一。它們表示從單個字元到整個文件的文字資料。
最簡單的字串程式設計涉及單位元組文字,它可以表示256個不同的字元。ASCII是最常見的編碼。核心PHP語言有許多有用的函式來操作這些字串。
如果您在PHP中做過任何程式設計,您可能會遇到echo,但您可能沒有意識到它實際上根本不是一個函式。事實上,echo是一種語言構造,因此即使您使用它比任何真正的字串函式都多,也不能總是使用它來代替函式。
您幾乎總是這樣使用它:
echo "Hello, world";但實際上你可以像函式一樣呼叫它:
echo("Hello, world");雖然看起來是這樣,但實際上這並不是一個函式呼叫。例如,不能將其返回值賦給變數:
$a = echo("Hello, world");Parse error: syntax error, unexpected 'echo' (T_ECHO)輸出字串值的另一種方法是使用print。同樣,這不是一個真正的函式,儘管它比echo更接近於一個函式。與echo一樣,您可以不使用括號來呼叫它:
print "Hello, world";但是,與echo不同的是,它確實返回一個您可以指定的值,儘管該值始終為1:
$a = print("Hello, world");echo $a; // 1printf函式實際上是一個實函式。與echo和print一樣,它輸出字串,但它有一些獨特的行為,反映了c語言的相同功能:
$username = "John";$length = printf("Hello, %s", $username); // "Hello, John"echo $length; // 11第一個引數仍然是一個字串,用雙引號括起來。但是printf將對字串中的特殊字元序列執行各種替換。這些序列以百分比符號開始,就像上面的%s一樣。在這個特定的例子中,%s代表一個字串,printf用下一個引數替換它,這個引數是$username的值。
printf函式返回一個有用的值,即格式化字串的長度。例如,當將變數傳遞給printf時,這對於不能預先知道長度的程式碼非常有用。您可以使用該返回值來確定字串將在命令列上佔用多少物理空間。
談到字串長度,確定字串長度的標準方法是strlen函式。這個函式非常簡單:它接受一個字串引數並以整數形式返回位元組數。如前所述,對於ASCII文字,位元組數與字元數相同:
$length = strlen("Hello, World");echo $length; // 12在處理字串時,一個非常常見的任務是提取該字串的一部分。有幾種方法可以做到這一點,這裡給出的第一種方法指定了所需子字串的位置和長度。substr函式根據這些引數提取字串的固定部分。
$greeting = substr("Hello, World", 0, 5);echo $greeting; // "Hello"注意,與大多數程式語言一樣,PHP從0開始計算字串偏移量。PHP與某些語言的不同之處在於,該函式的第二個引數是結果字串的長度。
相關:最差和最難的程式語言
另一個區別是PHP支援偏移量和長度的負值。如果偏移量為負,則結果將從字串的結尾開始計數,而不是從開始計數:
$greeting = substr("Hello, World", -5, 5);echo $greeting; // "World"如果長度為負數,則表示刪除的字元數,而不是包含的字元數:
$greeting = substr("Hello, World", 0, -6);echo $greeting; // "Hello,"文字處理的一個重要部分是查詢一個字串在另一個字串中的位置。在PHP中,您可以透過strpos函式實現這一點:
$pos = strpos("Hello, World", ",");echo $pos; // 5您可以將strpos與substr結合使用,為提取字串的一部分提供更通用的方法:
$string = "Hello, World";$pos = strpos($string, ",");$first_part = substr($string, 0, $pos);echo $first_part; // "Hello"傳統的ASCII字串有明確定義的大小寫變體。a的大寫版本是a。Z的小寫版本是Z。strtoupper和strtolower函式執行這些轉換。它們對ASCII字串中的每個字元執行此操作:
$original = "hello, WORLD";$upper = strtoupper($original);$lower = strtolower($original);echo "$lower $upper"; // "hello, world HELLO, WORLD"有時,您會得到一個包含前導或尾隨空格的字串:空格、製表符或換行符。這通常是不需要的,但修剪可以消除它:
$trimmed = trim(" Hello, World ");echo $trimmed; // "Hello, World"爆炸功能聽起來很危險,但別擔心,它不會造成任何持久的傷害!相反,它將一個字串轉換為一個字串陣列,由另一個字串(通常是一個字元)分隔。例如,如果你想把一個句子分成幾個單獨的單詞,它可能會很有用。
$sentence = "The quick brown fox jumps over the lazy dog";$words = explode(" ", $sentence);$words變數現在是一個包含單個單詞的陣列:
[ "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog" ]與explode類似,str\u split函式將一個字串分解為一個較小的字串陣列。與explode不同,最終的字串不是由其內容決定的,而是由其長度決定的。
$parts = str_split("Hello, World", 6);$parts陣列現在包含兩個子字串,每個子字串長度為6個字元:
[ "Hello,", " World" ]可以使用str\u replace對字串執行簡單的搜尋和替換操作。它需要三個引數:要搜尋的字串、替換字串和要搜尋的原始字串。函式返回新字串:
$result = str_replace("o", "OO", "Hello, World");echo $result; // "HellOO, WOOrld"由於PHP經常用於web開發,因此處理文字是一項常見的任務。
這裡提供的函式是使用PHP處理文字最有用的函式之一。該語言本身內建了大約100個字串處理函式。
請記住,這裡顯示的函式用於ASCII字串,而不是Unicode字串。PHP還支援Unicode和其他多位元組字元編碼方案,並有一組單獨的函式。
關鍵區別——實際引數與形式引數 使用函式是程式設計中的一個重要概念。函式是一系列可以執行某種特定任務的語句。如果程式設計師將所有語句作為一個程式編寫,它將變得複雜。函式可以用來避免這種情況。它們也被...
...在一對大括號內。函式可以返回值。有些函式不返回值。使用引數列表將資料傳遞給函式。函式定義具有由函式執行的實際功能。在C語言程式設計中,有函式原型和函式定義。函式原型與函式定義的關鍵區別在於函式原型只包...
...—遞迴與迭代 遞迴和迭代可以用來解決程式設計問題。使用遞迴或迭代來解決問題的方法取決於解決問題的方式。遞迴和迭代的關鍵區別在於遞迴是一種在同一個函式中呼叫函式的機制,而迭代是重複執行一組指令,直到給定...
...建函式組成。也可以由程式設計師編寫函式。這些被稱為使用者定義函式。引數和引數是與函式相關聯的術語。引數和引數之間的關鍵區別在於,引數是呼叫函式時傳遞的資料,而引數是由函式定義的變數,該函式在呼叫函式時...
...為全域性最大值。此元素大於集合的任何值。如果它是一個函式,它比函式在整個集合域上的任何其他值都大(codomain中最大的元素)。函式或集合的全域性最大值是唯一的(對於特定情況)。 在函式的情況下,在最大值處,...
...microsoftexcel的複雜單元格中提取資訊而掙扎。我寫的關於如何用這個函式從Excel中提取數字或文字的文章中的許多評論和問題證明了這一點。顯然,如何從Excel工作表中分離出所需的資料並不總是很清楚。 ...
...來讀取文字檔案中的大量數字並計算模式,則不需要知道如何使用它。只要您知道該函式需要一個填充數字的文字檔案作為輸入,並輸出一個數字作為結果,您就可以在任何程式中使用它,而不會有太多麻煩。 ...