<?php $txt="Hello world!"; echo $txt; ?>
通過上篇對PHP數據類型的簡單了解,知道了字符串類型,本篇將介紹在php中常用的字符串函數。
字符串是字符序列,比如 "Hello world!"。
PHP 字符串函數
字符串在php的作用?
字符串變量用於存儲並處理文本。
字符串變量用於包含有字符的值。
在創建字符串之后,我們就可以對它進行操作了。您可以直接在函數中使用字符串,或者把它存儲在變量中。
在下面的實例中,我們創建一個名為 txt 的字符串變量,並賦值為 "Hello world!" 。然后我們輸出 txt 變量的值:
<?php $txt="Hello world!"; echo $txt; ?>
運行結果:
Hello world!
注釋:當您賦一個文本值給變量時,請記得給文本值加上單引號或者雙引號。
一些常用的操作字符串的函數和運算符。
PHP 並置運算符
在 PHP 中,只有一個字符串運算符。
並置運算符 (.) 用於把兩個字符串值連接起來。
下面的實例演示了如何將兩個字符串變量連接在一起:
<?php $txt1="Hello world!"; $txt2="What a nice day!"; echo $txt1 . " " . $txt2; ?>
運行結果:
Hello world! What a nice day!
提示:在上面的代碼中,我們已經使用了兩次並置運算符。這是由於我們需要在兩個字符串之間插入一個空格。
1. strlen() 函數
strlen() 函數返回字符串的長度,以字符計。
下例返回字符串 "Hello world!" 的長度:
<?php echo strlen("Hello world!"); ?>
運行結果:
12
提示:strlen() 常用於循環和其他函數,在確定字符串何時結束很重要時。(例如,在循環中,我們也許需要在字符串的最后一個字符之后停止循環)。
2. strpos() 函數
strpos() 函數用於檢索字符串內指定的字符或文本。
如果找到匹配,則會返回首個匹配的字符位置。如果未找到匹配,則將返回 FALSE。
下例檢索字符串 "Hello world!" 中的文本 "world":
<?php echo strpos("Hello world!","world"); ?>
運行結果:
6
提示:上例中字符串 "world" 的位置是 6。是 6(而不是 7)的理由是,字符串中首字符的位置是 0 而不是 1。
3. addcslashes() //不常用
addcslashes() 函數返回在指定字符前添加反斜杠的字符串。
注釋:addcslashes() 函數對大小寫敏感。
注釋:對以下字符應用 addcslashes() 時請小心:0(NULL), r(回車), n(換行), f 換頁)、t(制表符)以及 v(垂直制表符)。在 PHP 中,\0, \r, \n, \t, \f 以及 \v 是預定義的轉義序列。
<?php $str = addcslashes("A001 A002 A003","A"); echo($str); ?>
運行結果:
\A001 \A002 \A003
向字符串中的某個范圍內的字符添加反斜杠:
<?php $str = "Welcome to Shanghai!"; echo $str."<br>"; echo addcslashes($str,'A..Z')."<br>"; echo addcslashes($str,'a..z')."<br>"; echo addcslashes($str,'a..g'); ?>
運行結果:
Welcome to Shanghai! \Welcome to \Shanghai! W\e\l\c\o\m\e \t\o S\h\a\n\g\h\a\i! W\el\com\e to Sh\an\gh\ai!
4. addslashes() //不常用
addslashes() 函數返回在預定義字符之前添加反斜杠的字符串。
預定義字符是:
- 單引號(')
- 雙引號(")
- 反斜杠(\)
- NULL
提示:該函數可用於為存儲在數據庫中的字符串以及數據庫查詢語句准備字符串。
注釋:默認地,PHP 對所有的 GET、POST 和 COOKIE 數據自動運行 addslashes()。所以您不應對已轉義過的字符串使用 addslashes(),因為這樣會導致雙層轉義。遇到這種情況時可以使用函數 get_magic_quotes_gpc() 進行檢測。
PHP 字符串函數是 PHP 核心的組成部分。無需安裝即可使用這些函數。
向字符串中的預定義字符添加反斜杠:
<?php $str = "Who's Bill Gates?"; echo $str . " This is not safe in a database query.<br>"; echo addslashes($str) . " This is safe in a database query."; ?>
運行結果:
Who's Bill Gates? This is not safe in a database query. Who\'s Bill Gates? This is safe in a database query.
5. bin2hex() //不常用
bin2hex() 函數把 ASCII 字符的字符串轉換為十六進制值。字符串可通過使用 pack() 函數再轉換回去。
把一個字符串值從二進制轉換為十六進制,再轉換回去:
<?php $str = "Shanghai"; echo bin2hex($str) . "<br>"; echo pack("H*",bin2hex($str)) . "<br>"; ?>
運行結果:
5368616e67686169 Shanghai
提示:bin2hex()轉換后的字符串均為16位。
提示:這些函數均來自php5,其他或更高版本在應用函數時還需要先檢測是否可用;
函數 | 描述 |
---|---|
addcslashes() | 返回在指定的字符前添加反斜杠的字符串。 |
addslashes() | 返回在預定義的字符前添加反斜杠的字符串。 |
bin2hex() | 把 ASCII 字符的字符串轉換為十六進制值。 |
chop() | 刪除字符串右側的空白字符或其他字符。 |
chr() | 從指定的 ASCII 值返回字符。 |
chunk_split() | 把字符串分割為一系列更小的部分。 |
convert_cyr_string() | 把字符串由一種 Cyrillic 字符集轉換為另一種。 |
convert_uudecode() | 解碼 uuencode 編碼字符串。 |
convert_uuencode() | 使用 uuencode 算法對字符串進行編碼。 |
count_chars() | 返回有關字符串中所用字符的信息。 |
crc32() | 計算字符串的 32 位 CRC。 |
crypt() | 單向的字符串加密法(hashing)。 |
echo() | 輸出一個或多個字符串。 |
explode() | 把字符串打散為數組。 |
fprintf() | 把格式化的字符串寫入到指定的輸出流。 |
get_html_translation_table() | 返回由 htmlspecialchars() 和 htmlentities() 使用的翻譯表。 |
hebrev() | 把希伯來文本轉換為可見文本。 |
hebrevc() | 把希伯來文本轉換為可見文本,並把新行(\n)轉換為 <br>。 |
hex2bin() | 把十六進制值的字符串轉換為 ASCII 字符。 |
html_entity_decode() | 把 HTML 實體轉換為字符。 |
htmlentities() | 把字符轉換為 HTML 實體。 |
htmlspecialchars_decode() | 把一些預定義的 HTML 實體轉換為字符。 |
htmlspecialchars() | 把一些預定義的字符轉換為 HTML 實體。 |
implode() | 返回由數組元素組合成的字符串。 |
join() | implode() 的別名。 |
lcfirst() | 把字符串的首字符轉換為小寫。 |
levenshtein() | 返回兩個字符串之間的 Levenshtein 距離。 |
localeconv() | 返回本地數字及貨幣格式信息。 |
ltrim() | 移除字符串左側的空白字符或其他字符。 |
md5() | 計算字符串的 MD5 散列。 |
md5_file() | 計算文件的 MD5 散列。 |
metaphone() | 計算字符串的 metaphone 鍵。 |
money_format() | 返回格式化為貨幣字符串的字符串。 |
nl_langinfo() | 返回特定的本地信息。 |
nl2br() | 在字符串中的每個新行之前插入 HTML 換行符。 |
number_format() | 以千位分組來格式化數字。 |
ord() | 返回字符串中第一個字符的 ASCII 值。 |
parse_str() | 把查詢字符串解析到變量中。 |
print() | 輸出一個或多個字符串。 |
printf() | 輸出格式化的字符串。 |
quoted_printable_decode() | 把 quoted-printable 字符串轉換為 8 位字符串。 |
quoted_printable_encode() | 把 8 位字符串轉換為 quoted-printable 字符串。 |
quotemeta() | 引用元字符。 |
rtrim() | 移除字符串右側的空白字符或其他字符。 |
setlocale() | 設置地區信息(地域信息)。 |
sha1() | 計算字符串的 SHA-1 散列。 |
sha1_file() | 計算文件的 SHA-1 散列。 |
similar_text() | 計算兩個字符串的相似度。 |
soundex() | 計算字符串的 soundex 鍵。 |
sprintf() | 把格式化的字符串寫入變量中。 |
sscanf() | 根據指定的格式解析來自字符串的輸入。 |
str_getcsv() | 把 CSV 字符串解析到數組中。 |
str_ireplace() | 替換字符串中的一些字符(對大小寫不敏感)。 |
str_pad() | 把字符串填充為新的長度。 |
str_repeat() | 把字符串重復指定的次數。 |
str_replace() | 替換字符串中的一些字符(對大小寫敏感)。 |
str_rot13() | 對字符串執行 ROT13 編碼。 |
str_shuffle() | 隨機地打亂字符串中的所有字符。 |
str_split() | 把字符串分割到數組中。 |
str_word_count() | 計算字符串中的單詞數。 |
strcasecmp() | 比較兩個字符串(對大小寫不敏感)。 |
strchr() | 查找字符串在另一字符串中的第一次出現。(strstr() 的別名。) |
strcmp() | 比較兩個字符串(對大小寫敏感)。 |
strcoll() | 比較兩個字符串(根據本地設置)。 |
strcspn() | 返回在找到某些指定字符的任何部分之前,在字符串中查找的字符數。 |
strip_tags() | 剝去字符串中的 HTML 和 PHP 標簽。 |
stripcslashes() | 刪除由 addcslashes() 函數添加的反斜杠。 |
stripslashes() | 刪除由 addslashes() 函數添加的反斜杠。 |
stripos() | 返回字符串在另一字符串中第一次出現的位置(對大小寫不敏感)。 |
stristr() | 查找字符串在另一字符串中第一次出現的位置(大小寫不敏感)。 |
strlen() | 返回字符串的長度。 |
strnatcasecmp() | 使用一種"自然排序"算法來比較兩個字符串(對大小寫不敏感)。 |
strnatcmp() | 使用一種"自然排序"算法來比較兩個字符串(對大小寫敏感)。 |
strncasecmp() | 前 n 個字符的字符串比較(對大小寫不敏感)。 |
strncmp() | 前 n 個字符的字符串比較(對大小寫敏感)。 |
strpbrk() | 在字符串中查找一組字符的任何一個字符。 |
strpos() | 返回字符串在另一字符串中第一次出現的位置(對大小寫敏感)。 |
strrchr() | 查找字符串在另一個字符串中最后一次出現。 |
strrev() | 反轉字符串。 |
strripos() | 查找字符串在另一字符串中最后一次出現的位置(對大小寫不敏感)。 |
strrpos() | 查找字符串在另一字符串中最后一次出現的位置(對大小寫敏感)。 |
strspn() | 返回在字符串中包含的特定字符的數目。 |
strstr() | 查找字符串在另一字符串中的第一次出現(對大小寫敏感)。 |
strtok() | 把字符串分割為更小的字符串。 |
strtolower() | 把字符串轉換為小寫字母。 |
strtoupper() | 把字符串轉換為大寫字母。 |
strtr() | 轉換字符串中特定的字符。 |
substr() | 返回字符串的一部分。 |
substr_compare() | 從指定的開始位置(二進制安全和選擇性區分大小寫)比較兩個字符串。 |
substr_count() | 計算子串在字符串中出現的次數。 |
substr_replace() | 把字符串的一部分替換為另一個字符串。 |
trim() | 移除字符串兩側的空白字符和其他字符。 |
ucfirst() | 把字符串中的首字符轉換為大寫。 |
ucwords() | 把字符串中每個單詞的首字符轉換為大寫。 |
vfprintf() | 把格式化的字符串寫到指定的輸出流。 |
vprintf() | 輸出格式化的字符串。 |
vsprintf() | 把格式化字符串寫入變量中。 |
wordwrap() | 打斷字符串為指定數量的字串 |
上面表中的字符串均可做了解!