6.PHP字符串

字符串的處理介紹

字符串的處理方式

在C語言中字符串是作為字節(jié)數(shù)組處理的。在Java語言中字符串是作為對象處理的。而php則把字符串作為基本數(shù)據(jù)類型來處理。通常對字符串的處理涉及字符串的 格式化 。 字符串的 分割連接 、字符串的 比較 、以及字符串的 查找匹配替換

常用的字符串輸出函數(shù)

常用的輸出字符串函數(shù):
echo( ) -- 輸出字符串
print( ) -- 輸出一個字符串
die( ) -- 輸出一條消息,并退出當(dāng)前腳本
printf( ) -- 輸出格式化字符串
sprintf( )-- 把格式化的字符串寫入一個變量中
如:

echo 'aaa','bbbb','ccc';//輸注多個值
$link=@mysql_connect(“”,””,””)or die(“失敗”)
printf與sprintf

printfsprintf都是格式化字串:
字符串轉(zhuǎn)換格式:
%% 返回百分比符號
%b 二進制數(shù)
%c 依照ASCII值的字符
%d 帶符號十進制數(shù)
%e 可續(xù)計數(shù)法(如1.5e3)
%u 無符號十進制數(shù)
%f或%F 浮點數(shù)
%o 八進制數(shù)
%s 字符串
%x或%X 十六進制數(shù)

把文字格式化以后輸出,如:

$name="hunte"; 
$age=25; 
printf("my name is %s, age %d", $name, $age);

說明

  • 可以在"%"和字母之間插進數(shù)字表示最大場寬。
    ①例如: %3d 表示輸出3位整型數(shù), 不夠3位右對齊。
    ②%9.2f 表示輸出場寬為9的浮點數(shù), 其中小數(shù)位為2, 整數(shù)位為6, 小數(shù)點占一位, 不夠9位右對齊。
    ③%8s 表示輸出8個字符的字符串, 不夠8個字符右對齊。
    ④如果字符串的長度、或整型數(shù)位數(shù)超過說明的場寬, 將按其實際長度輸出。
    ⑤浮點數(shù), 若整數(shù)部分位數(shù)超過了說明的整數(shù)位寬度, 將按實際整數(shù)位輸出;
    ⑥小數(shù)部分位數(shù)超過了說明的小數(shù)位寬度, 則按說明的寬度以四舍五入輸出。
    ⑦若想在輸出值前加一些0, 就應(yīng)在場寬項前加個0。
    例如: %04d 表示在輸出一個小于4位的數(shù)值時, 將在前面補0使其總寬度為4位。
    ⑧如果用浮點數(shù)表示字符或整型量的輸出格式, 小數(shù)點后的數(shù)字代表最大寬度, 小數(shù)點前的數(shù)字代表最小寬度。
    例如: %6.9s 表示顯示一個長度不小于6且不大于9的字符串。若大于9, 則第9個字符以后的內(nèi)容將被刪除。

  • 可以在"%"和字母之間加小寫字母l, 表示輸出的是長型數(shù)。
    ①例如: %ld 表示輸出long整數(shù)
    ②%lf 表示輸出double浮點數(shù)

  • 可以控制輸出左對齊或右對齊, 即在"%"和字母之間加入一個"-" 號可說明輸出為左對齊, 否則為右對齊。
    ①例如: %-7d 表示輸出7位整數(shù)左對齊
    ②%-10s 表示輸出10個字符左對齊

  • 一些特殊規(guī)定字符
    ①\n 換行
    ②\f 清屏并換頁
    ③\r 回車
    ④\t Tab符
    ⑤\xhh 表示一個ASCII碼用16進表示,
    ⑥其中hh是1到2個16進制數(shù)

sprintf函數(shù)跟printf相似,但不打印,而是返回格式化后的文字,其他的與printf一樣。

常用的字符串格式化函數(shù)

1. 去除空格和字符串填充補函數(shù)
  • 函數(shù):ltrim( )
    語法: string ltrim(string str[, string charlist] ); 

返回值: 字符串
本函數(shù)用來刪去字符串中的前導(dǎo)空格 (whitespace)。

  • 函數(shù):rtrim( ) (還有個別名:chop()
    語法: string rtrim(string str[, string charlist] ); 

返回值: 字符串
本函數(shù)用來刪去字符串中的后綴空格 (whitespace)。

  • 函數(shù):trim( )
    截去字符串首尾的空格。
    語法: string trim(string str[, string charlist] ); 

返回值: 字符串
本函數(shù)返回字符串 string 首尾的空白字符去除后的字串。

  • 函數(shù):str_pad() 按需求對字符串進行填充。
    語法:string str_pad ( string input, int pad_length [, string pad_string [, int pad_type]] ) 

STR_PAD_LEFT 字符串左添補
STR_PAD_RIGHT 字符串右添補
STR_PAD_BOTH 字符串兩端添補

<?php
$input = "Alien";
echo str_pad($input, 10);
// produces "Alien     "
echo str_pad($input, 10, "-=", STR_PAD_LEFT);  
// produces "-=-=-Alien"
echo str_pad($input, 10, "_", STR_PAD_BOTH);  
// produces "__Alien___"
echo str_pad($input, 6 , "___");
// produces "Alien_“
?> 
2. 字符串大小寫的轉(zhuǎn)換
  • 函數(shù): strtolower( )
    語法: string strtolower(string str); 

本函數(shù)將字符串 str 全部變小寫字符串。

  • 函數(shù): strtoupper( )
    語法: string strtoupper(string str); 

本函數(shù)將字符串 str 全部變大寫字符串。

  • 函數(shù):ucfirst( )
    將字符串第一個字符改大寫。
    語法: string ucfirst(string str); 

本函數(shù)返回字符串 str 第一個字的字首字母改成大寫。

  • 函數(shù):ucwords( )
    將字符串每個字第一個字母改大寫。
    語法: string ucwords(string str); 

本函數(shù)返回字符串 str 每個字的字首字母全都改成大寫。

3. 和HTML標(biāo)簽相關(guān)聯(lián)的字符串格式化
  • 函數(shù):nl2br( )
語法:string nl2br ( string string )

將字符串中”\n”轉(zhuǎn)成HTML換行符<br / >

  • 函數(shù):htmlspecialchars()
語法:string htmlspecialchars ( string string [, int quote_style [, string charset]] )
  • 函數(shù): htmlentities()
語法:string htmlentities ( string string [, int quote_style [, string charset]] )

可以將所有的非ASCII碼轉(zhuǎn)換成對應(yīng)實體代碼。

<?php
$str = "A 'quote' is <b>bold</b>";
// Outputs: A 'quote' is <b>bold</b>
echo htmlentities($str);
// Outputs: A 'quote' is <b>bold</b>
echo htmlentities($str, ENT_QUOTES);
?> 
  • 函數(shù):string strip_tags()
語法:string strip_tags ( string str [, string allowable_tags] )

刪除HTML的標(biāo)簽函數(shù)

<?php
$text = '<p>Test paragraph.</p><!-- Comment --> Other text';
echo strip_tags($text); //Test paragraph. Other text
// 保留 <p>
echo strip_tags($text, '<p>');
//輸出:<p>Test paragraph.</p> Other text 
?> 
4. 其他字符串格式化函數(shù)
  • 函數(shù): strrev( )
    顛倒字符串。將字符串前后顛倒。
語法: string strrev(string string);
  • 函數(shù): strlen( )
    取得字符串長度。
語法: int strlen(string str); 

本函數(shù)返回指定的字符串長度。

  • 函數(shù):number_format()
語法:string number_format ( float number [, int decimals [, string dec_point, string thousands_sep]] )

格式貨幣、數(shù)字、時間等。

  • 函數(shù):md5() 加密函數(shù)
格式:string md5 (string str [, bool raw_output] ) 

字符串比較函數(shù)

PHP中,有多種方法可以對字符串進行比較,除了可以直接使用條件運算符(<, >, ==)加以比較外。
按字節(jié)進行字符串的比較
strcmp();(整個比較是否相同)
strncmp();(指定比較長度的字符串比較)
strcasecmp(); (不區(qū)分大小寫的全串比較)
按自然排序法時行字符串的比較
strnatcmp();
字符串的模糊比較
similar_text(); (返回相似字符串的個數(shù))

字符串的分割與拼裝

  • explode -- 使用一個字符串分割另一個字符串
    語法:array explode ( string separator, string string [, int limit] )

此函數(shù)返回由字符串組成的數(shù)組,每個元素都是 string 的一個子串,它們被字符串 separator 作為邊界點分割出來。如果設(shè)置了 limit 參數(shù),則返回的數(shù)組包含最多 limit 個元素,而最后那個元素將包含 string 的剩余部分。 例如:

    $pizza  = "piece1 piece2 piece3";
    $pieces = explode(" ", $pizza);
    echo $pieces[0];    // piece1
    echo $pieces[1];    // piece2
  • implode()
    用一組較小的字符串創(chuàng)建一個大字符串。
    格式:string implode ( string glue, array pieces )

第一個參數(shù)glue是放在第二個參數(shù)pieces的元素之間的字符串。可以像下面這樣重建簡單的逗號分隔的字符串。
例如:

$array = array('lastname','email','phone');
$comma_separated = implode(',', $array);
echo $comma_separated; 
//lastname,email,phone

字符串的截取

  • 函數(shù):substr( )
    取部份字符串。
   語法: string substr(string string, int start, int [length]); 

返回值: 字符串
本函數(shù)將字符串 string 的第 start 位起的字符串取出 length 個字符,若省略參數(shù) length,則取到字符串末尾 。若 start 為負數(shù),則從字符串尾端往前開始提取。如果length為整數(shù),表示返回length個字符,若為負數(shù),則表示取到倒數(shù)第 length 個字符。

字符串的查找:

  • 函數(shù): strstr( ) 別名:strchr( )
    返回字符串中某字符串開始處至結(jié)束的字符串。
    語法: string strstr(string haystack, string needle); 

返回值: 字符串
本函數(shù)將 needle 最先出現(xiàn)在 haystack 處起至 haystack 結(jié)束的字符串返回。若找不到 needle 則返回 false。

  • 函數(shù): strrchr()
    取得某字符最后出現(xiàn)的位置。
    語法: string strrchr(string haystack, string needle); 

本函數(shù)用來尋找字符串 haystack 中的字符 needle 最后出現(xiàn)位置,并將此位置起至字符串 haystack 結(jié)束之間的字符串返回。若沒有找到 needle 則返回 false。

  • 函數(shù):strpos()
    尋找字符串中某字符最先出現(xiàn)的位置。默認(rèn)從 0 開始。
    語法: int strpos(string haystack, string needle, int [offset]); 

本函數(shù)用來尋找字符串 haystack 中的字符 needle 最先出現(xiàn)的位置。若找不到指定的字符,則返回 false 值。參數(shù) offset 可省略,用來表示從 offset 開始找。

  • 函數(shù):strrpos( )
    尋找字符串中某字符最后出現(xiàn)的位置。
    語法: int strrpos(string haystack, char needle); 

返回值: 整數(shù)
本函數(shù)用來尋找字符串 haystack 中的字符 needle 最后出現(xiàn)的位置。若找不到指定的字符,則返回 false 值。

字符串的替換

str_replace()
字符串替換,三種替換方式

str_replace(string $search, string $replace, string $str);
str_replace(array $search, string $replace, string $str);
str_replace(array $search, array $replace, string $str);

Have a Try

  1. 自定義一個函數(shù):string getFileType(String $name); 求一個文件的后綴名
    例如:調(diào)用時傳入一個文件名的字串如:”a.txt”,哪個返回結(jié)果為”.txt”;
  2. 使用字串函數(shù)按要求輸出結(jié)果:
    a)將102這個數(shù)字分別以以二進制、八進制、十六進制輸出
    b)將12.123乘以2后保留小數(shù)位兩位輸出。
    c)將字串#1024兩側(cè)的號與#號去除后輸出。
    d)將字串strtoupper傳化成大寫后倒敘輸出。
    e)將字串<div class="bord02"></div>保持原樣輸出。
    f)將10:20:30:40:50中:號換成,號
  3. 做一個網(wǎng)站訪問的計數(shù)器。在網(wǎng)頁中輸出:網(wǎng)站訪問:1253次,而且每次刷新數(shù)量都加一。(提示:采用文本存放計數(shù)信息)。
  4. 定義一個字串的大小寫轉(zhuǎn)換函數(shù): (可參考:chr( )和ord( ))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,698評論 6 539
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,202評論 3 426
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,742評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,580評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,297評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,688評論 1 327
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,693評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,875評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,438評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,183評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,384評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,931評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,612評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,022評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,297評論 1 292
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,093評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,330評論 2 377

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