字符串的處理介紹
字符串的處理方式
在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
printf
與sprintf
都是格式化字串:
字符串轉(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
- 自定義一個函數(shù):string getFileType(String $name); 求一個文件的后綴名
例如:調(diào)用時傳入一個文件名的字串如:”a.txt”,哪個返回結(jié)果為”.txt”; - 使用字串函數(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中:號換成,號 - 做一個網(wǎng)站訪問的計數(shù)器。在網(wǎng)頁中輸出:網(wǎng)站訪問:1253次,而且每次刷新數(shù)量都加一。(提示:采用文本存放計數(shù)信息)。
- 定義一個字串的大小寫轉(zhuǎn)換函數(shù): (可參考:chr( )和ord( ))