php字符串基本操作

字符串操作

在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)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末割按,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子磷籍,更是在濱河造成了極大的恐慌适荣,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件院领,死亡現(xiàn)場(chǎng)離奇詭異弛矛,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)比然,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門丈氓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人谈秫,你說(shuō)我怎么就攤上這事扒寄。” “怎么了拟烫?”我有些...
    開(kāi)封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)迄本。 經(jīng)常有香客問(wèn)我硕淑,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任置媳,我火速辦了婚禮于樟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拇囊。我一直安慰自己迂曲,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布寥袭。 她就那樣靜靜地躺著路捧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪传黄。 梳的紋絲不亂的頭發(fā)上杰扫,一...
    開(kāi)封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音膘掰,去河邊找鬼章姓。 笑死,一個(gè)胖子當(dāng)著我的面吹牛识埋,可吹牛的內(nèi)容都是我干的凡伊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼窒舟,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼系忙!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起辜纲,我...
    開(kāi)封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤笨觅,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后耕腾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體见剩,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年扫俺,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了苍苞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡狼纬,死狀恐怖羹呵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情疗琉,我是刑警寧澤冈欢,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站盈简,受9級(jí)特大地震影響凑耻,放射性物質(zhì)發(fā)生泄漏太示。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一香浩、第九天 我趴在偏房一處隱蔽的房頂上張望类缤。 院中可真熱鬧,春花似錦邻吭、人聲如沸餐弱。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)膏蚓。三九已至,卻和暖如春速缆,著一層夾襖步出監(jiān)牢的瞬間降允,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工艺糜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留剧董,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓破停,卻偏偏與公主長(zhǎng)得像翅楼,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子真慢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容