字符串操作
在php開(kāi)發(fā)過(guò)程中有些基礎(chǔ)知識(shí)一時(shí)想不起來(lái)锡足,如果同事間合作略顯尷尬忱屑,小編整理了一些對(duì)字符串的基本操作的知識(shí)點(diǎn)供大家參考蹬敲。如有誤點(diǎn)還請(qǐng)指點(diǎn),謝謝想幻。
1.字符串簡(jiǎn)介
字符串是指由零個(gè)或多個(gè)字符串構(gòu)成的一個(gè)集合粱栖,這里所說(shuō)的字符主要包含以下幾種類型。
1.數(shù)字類型:1,2,3等脏毯。
2.字母類型:a,b,c等。
3.特殊字符型:#幔崖,¥食店,%等。
4.不可見(jiàn)字符型:換行符(\n)赏寇,回車符(\r)吉嫩,Tab字符(\t)等。
其中嗅定,不可見(jiàn)字符是比較特殊的一組字符自娩,它用來(lái)控制字符串格式化輸出,在瀏覽器上不可見(jiàn)渠退,只能看到字符串輸出的結(jié)果忙迁。
2.單引號(hào)和雙引號(hào)的使用方法及區(qū)別
字符串同城一串的整體作為操作對(duì)象脐彩,一般用單引號(hào)或者雙引號(hào)表示一個(gè)字符。單引號(hào)和雙引號(hào)在使用上有一定的區(qū)別姊扔。
$s1 = "張三" ; echo $s1 : 張三
$s2 = '李四'; echo $s2 :李四
對(duì)比
$s4 = "你好s1" ; 輸出: 你好張三
$s4 = "你好s2" ; 輸出:你好$s2
總結(jié):就是說(shuō)雙引號(hào)中的變量PHP會(huì)解析,而單引號(hào)中的變量PHP不會(huì)解析.
3.字符串的連接符
半角句號(hào)"."是字符串鏈接符,可以吧兩個(gè)或兩個(gè)以上的字符串鏈接成一個(gè)字符串.
例如:
<?php
$name = "PHP";
$name1 = "是世界上最好的語(yǔ)言!";
echo $name.$name1;
?>
結(jié)果為:PHP是世界上最好的語(yǔ)言!
4.字符串操作
4.1 去除字符串收尾空格和特殊字符方法
1.trim()
函數(shù):去除首尾字符和特殊符,并返回處理后的字符
2.ltrim()
函數(shù):去除字符串左邊的空格和特殊字符
3.rtrim()
函數(shù):去除字符串右邊的空格和特殊字符
例如:string trim(strimg str[,string charlist]);
str:表示要操作的字符串對(duì)象
charlist:可選參數(shù),表示指定要從字符串中刪除哪些字符,如果不設(shè)置則刪除所有字符
charlist可選參數(shù):
- \0: null,空格
- \t: tab,制表符
- \n: 換行符
- \x0B: 垂直制表符
- \r: 回車符
- " ": 空格
除了這些參數(shù)之外,也可以在chaarlist參數(shù)中提供要去除的特殊字符.
4.2 字符串轉(zhuǎn)義
字符串轉(zhuǎn)義惠奸、還原的方法有兩種:一種是手動(dòng)轉(zhuǎn)義&字符串還原數(shù)據(jù),另一種是自動(dòng)轉(zhuǎn)義&還原字符串?dāng)?shù)據(jù);
1.手動(dòng)轉(zhuǎn)義,還原字符串?dāng)?shù)據(jù).
在字需要轉(zhuǎn)義的字符串前面加"\"轉(zhuǎn)移符. 對(duì)于數(shù)據(jù)量較大的字符串建議使用自動(dòng)轉(zhuǎn)義函數(shù)轉(zhuǎn)義.
注意:手動(dòng)轉(zhuǎn)義的字符串可以使用 addcslashes()函數(shù)進(jìn)行字符串還原.
2.自動(dòng)轉(zhuǎn)義,還原字符串?dāng)?shù)據(jù).
-
addslashes()
函數(shù):自動(dòng)轉(zhuǎn)義函數(shù): -
stripslashes()
函數(shù):自動(dòng)還原函數(shù): -
addslashes()
函數(shù)為字符串str加入反斜線"\"; 使用方法:string addslashes(strimg str); -
stripslashes()
函數(shù)把轉(zhuǎn)義后的字符串還原;使用方法:strimg stripslashes(strimg str);
注意:如果參數(shù)charlist中包含\n,\r等字符,講義C語(yǔ)言風(fēng)格轉(zhuǎn)換,而其他非字母數(shù)字且ASCII碼值低于32或高于126的字符均轉(zhuǎn)換成八進(jìn)制表示.
4.3 獲取字符串長(zhǎng)度
1.strlen()
函數(shù):獲取字符串長(zhǎng)度值,例如:int strlen(string str)
說(shuō)明:漢字占兩個(gè)字符,數(shù)字,英文,小數(shù)點(diǎn),下劃線和空格占一個(gè)字符.
2.strlen()
函數(shù)在獲取字符串長(zhǎng)度的同時(shí)也可以檢測(cè)字符串長(zhǎng)度.
<?
if(strlen($_POST['pwd'])<6){ //檢測(cè)是否小于6
echo "<script>alert('用戶名或密碼不得小于6位!');history.back();</script>";
}else{
echo "用戶信息合法!";
}
4.4 截取字符串
1.substr()
函數(shù):分割字符串 例如:string substr(string str,int start [,int length])
- str:指定字符串對(duì)象
- start:指定開(kāi)始截取字符串的位置,如果為負(fù)數(shù),則從字符串的末尾開(kāi)始.(開(kāi)始從0位置開(kāi)始)
- length:可選參數(shù),指定截取字符的個(gè)數(shù),如果為負(fù),則表示渠道倒數(shù)第length個(gè)長(zhǎng)度.
- 連接字符:如果字符大于30個(gè)只顯示前30個(gè)字符,后面用點(diǎn)代替
if(strlen($text)>30){
echo substr($text,0,30)."...";
}else{
echo $text;
}
注意:如果截取字符串有中文請(qǐng)盡量保持截取偶數(shù)個(gè)字符,如果截取的值是奇數(shù),可能會(huì)導(dǎo)致字符亂碼,因?yàn)橐粋€(gè)中文字占兩個(gè)字符,解決辦法就是應(yīng)用substr()編寫一個(gè)自定義函數(shù).
4.5 比較字符串
strcmp($str1,$str2) 字節(jié)大小比較區(qū)分大小寫
strcasecmp($str1,$str2) 字節(jié)大小比較不區(qū)分大小寫
strnatcmp($str1,$str2) 自然排序法比較區(qū)分大小寫(主要是字符串中含有的數(shù)字比較,不分前后)
strnatcasecmp($str1,$str2) 自然排序比較不區(qū)分大小寫
strncmp(string str1,strimg str2,int len) 指定從源字符串位置開(kāi)始比較,
len是用來(lái)比較字符串中的前n個(gè)字符
PHP中常用的字符串比較方法: 按字節(jié)進(jìn)行比較:strcmp()
和strcasecmp()
函數(shù)這兩個(gè)函數(shù)區(qū)別是strcmp()
函數(shù)區(qū)分大小寫,而strcasecmp()
函數(shù)不區(qū)分字符大小寫恰梢,函數(shù)strnatcmp()
同上
例如:
$str1 = "編程使我快樂(lè)!";
$str2 = "編程使我快樂(lè)!";
$str3 = "teacher";
$str4 = "TEACHER";
echo strcmp($str1,$str2); //這兩個(gè)字符串相等
echo strcmp($str3,$str4); //該函數(shù)區(qū)分大小寫
echo strcasecmp($str3,$str4); //該函數(shù)不區(qū)分大小寫
結(jié)果: 0 1 0
分析:如果兩個(gè)字符串大小相等返回0, 函數(shù)1比函數(shù)2大則返回值大于0,函數(shù)1比函數(shù)2小則返回值小于0,如果大小寫不一致strcmp函數(shù)返回1,strcasecmp函數(shù)返回0,因此strcmp函數(shù)可以用于用戶登錄用戶名和密碼的驗(yàn)證.
注意:自然運(yùn)算中1比2小,而計(jì)算機(jī)序列中1比2大.
4.6 檢索字符串
1.strstr()
函數(shù)查找指定的關(guān)鍵字(區(qū)分大小寫)
語(yǔ)法:string strstr(string haystack,string needle);
- haystack:必要參數(shù),指定從哪個(gè)字符串中進(jìn)行搜索
- needle:必要參數(shù),指定所搜對(duì)象,如果該參數(shù)是一個(gè)數(shù)值,那么將搜索與這個(gè)數(shù)值的ASCII值相匹配的字符.
2.strchr()
函數(shù)與其正好相反,該函數(shù)是從字符串后序的位置開(kāi)始檢索子串的.
3.substr_count()
函數(shù)檢索子串出現(xiàn)的次數(shù):語(yǔ)法:int substr__count(string haystack,string needle)haystack:指定字符串,needle:指定字符
4.7 替換字符串
替換字符串可以通過(guò)兩個(gè)函數(shù)實(shí)現(xiàn):
1.str_ireplace()
函數(shù) 當(dāng)確定要替換的字符串時(shí)使用
2.substr_replace()
函數(shù) 不確定要替換的字符串使用(下標(biāo))
str_ireplace()函數(shù)
語(yǔ)法格式如下:mixed str_ireplace(mixed search,mixed replace,mixed subject [,int &count])佛南,使用新的字符串(子串)替換原始字符串中被指定要替換的字符串。
說(shuō)明:將所有在參數(shù)subject中出現(xiàn)的參數(shù)search以參數(shù)replace取代嵌言,參數(shù)count表示取代字符串執(zhí)行的次數(shù)嗅回,本函數(shù)不區(qū)分大小寫。如果要區(qū)分大小寫可以使用 str_replace函數(shù)
substr_replace()函數(shù)
語(yǔ)法:string substr_replace(string str,string repl,int start,[int length])
說(shuō)明:如果參數(shù)start設(shè)為負(fù)數(shù)摧茴,而參數(shù)length數(shù)值小于或等于start數(shù)值妈拌,那么length的值自動(dòng)為0。
- str:原始字符串
- repl:替換后的新字符串
- start:制定替換字符串開(kāi)始位置蓬蝶。正數(shù)從開(kāi)頭開(kāi)始尘分,負(fù)數(shù)從末尾開(kāi)始,0表示從起始位置第一個(gè)字符
- length:可選參數(shù)丸氛,表示替換的長(zhǎng)度培愁,默認(rèn)值是整個(gè)字符串,正數(shù)表示起始位置從字符串開(kāi)頭開(kāi)始缓窜,負(fù)數(shù)表示起始位置從字符串末尾開(kāi)始定续,0表示插入而非替代。
4.8 字符串格式化
php中字符串格式化分為多種禾锤,按照格式分為字符串格式化和數(shù)字字符串格式化私股。數(shù)字字符串格式化最常用。
number_format()函數(shù)用來(lái)將數(shù)字字符串格式化
語(yǔ)法:string number_format(float number [int num_decimal_places,][string dec_seperator,string thousands_separator]);
注意:該函數(shù)有4個(gè)參數(shù):可以有1個(gè)恩掷,2個(gè)倡鲸,4個(gè)。不能只給3個(gè)黄娘。
1.$number
:舍去小數(shù)點(diǎn)后面值峭状,且第三位數(shù)字以逗號(hào)隔開(kāi)。
2.num_decimal_places
:(可選)格式化到小數(shù)點(diǎn)后第num_decimal_places位逼争。且每3位用逗號(hào)分開(kāi)优床,
3.dec_seperator
:用來(lái)替代小數(shù)點(diǎn)'.';
4.thousands_seperator
:用來(lái)替代第3位數(shù)字隔開(kāi)的逗號(hào)(,)誓焦。
例如:
$number = 111555444.3306;
echo number_format($number,2,'.','.');
一個(gè)參數(shù)的值:111,555,444
兩個(gè)參數(shù)的值:111,555,444.33
四個(gè)參數(shù)的值:111.555.444.33
4.9分割字符串
explode()
函數(shù):分割字符串,該函數(shù)將按照指定的規(guī)則對(duì)字符串進(jìn)行分割胆敞,返回值為數(shù)組。
語(yǔ)法格式:array explode(string separator,string str[,int (limit)]);
1.separator:必要參數(shù),指定分割的標(biāo)識(shí)符移层,如果為空返回false仍翰,如果separator包含的值在str中找不到,那么explode函數(shù)將返回包含str單個(gè)元素的數(shù)組幽钢。
2.str:必要參數(shù)歉备,指定將要被進(jìn)行分割的字符串。
3.limit:可選參數(shù)匪燕,如果設(shè)置了limit參數(shù)蕾羊,則返回的數(shù)組包含最多l(xiāng)imit個(gè)元素,而最后的元素將包含str的剩余部分帽驯,如果limit參數(shù)是負(fù)數(shù)龟再,則返回除了最后一個(gè)limit個(gè)元素外的所有元素。
5.0合成字符串
implode()
函數(shù):可以將數(shù)組中的內(nèi)容合成一個(gè)新字符串尼变。
語(yǔ)法格式如下:string implode(string glue,array pieces)
1.glue:字符串類型利凑,指定分隔符
2.pieces:數(shù)組配型,指定要被合并的數(shù)組嫌术。
說(shuō)明:explode()函數(shù)和implode()函數(shù)是兩個(gè)相對(duì)的函數(shù)哀澈,一個(gè)用于拆分一個(gè)用于合成。
以上是對(duì)字符串的基本操作分類的各種函數(shù)度气,重點(diǎn)