[TOC]
# 字符串的處理介紹
###### 字符串的處理方式
在C語言中字符串是作為字節數組處理的。在Java語言中字符串是作為對象處理的。而php則把字符串作為基本數據類型來處理。通常對字符串的處理涉及字符串的 *格式化* 。 字符串的 *分割* 和 *連接* 、字符串的 *比較* 、以及字符串的 *查找* 、*匹配* 和 *替換* 。
# 常用的字符串輸出函數
常用的輸出字符串函數:
`echo( )` -- 輸出字符串
`print( )` -- 輸出一個字符串
`die( )` -- 輸出一條消息,并退出當前腳本
`printf( )` -- 輸出格式化字符串
`sprintf( )`-- 把格式化的字符串寫入一個變量中
如:
```
echo 'aaa','bbbb','ccc';//輸注多個值
$link=@mysql_connect(“”,””,””)or die(“失敗”)
```
###### printf與sprintf
`printf`與`sprintf`都是格式化字串:
字符串轉換格式:
%% 返回百分比符號
%b 二進制數
%c 依照ASCII值的字符
%d 帶符號十進制數
%e 可續計數法(如1.5e3)
%u 無符號十進制數
%f或%F 浮點數
%o 八進制數
%s 字符串
%x或%X 十六進制數
把文字格式化以后輸出,如:
```
$name="hunte";
$age=25;
printf("my name is %s, age %d", $name, $age);
```
**說明**:
* 可以在"%"和字母之間插進數字表示最大場寬。
①例如: %3d 表示輸出3位整型數, 不夠3位右對齊。
②%9.2f 表示輸出場寬為9的浮點數, 其中小數位為2, 整數位為6, 小數點占一位, 不夠9位右對齊。
③%8s 表示輸出8個字符的字符串, 不夠8個字符右對齊。
④如果字符串的長度、或整型數位數超過說明的場寬, 將按其實際長度輸出。
⑤浮點數, 若整數部分位數超過了說明的整數位寬度, 將按實際整數位輸出;
⑥小數部分位數超過了說明的小數位寬度, 則按說明的寬度以四舍五入輸出。
⑦若想在輸出值前加一些0, 就應在場寬項前加個0。
例如: %04d 表示在輸出一個小于4位的數值時, 將在前面補0使其總寬度為4位。
⑧如果用浮點數表示字符或整型量的輸出格式, 小數點后的數字代表最大寬度, 小數點前的數字代表最小寬度。
例如: %6.9s 表示顯示一個長度不小于6且不大于9的字符串。若大于9, 則第9個字符以后的內容將被刪除。
* 可以在"%"和字母之間加小寫字母l, 表示輸出的是長型數。
①例如: %ld 表示輸出long整數
②%lf 表示輸出double浮點數
* 可以控制輸出左對齊或右對齊, 即在"%"和字母之間加入一個"-" 號可說明輸出為左對齊, 否則為右對齊。
①例如: %-7d 表示輸出7位整數左對齊
②%-10s 表示輸出10個字符左對齊
* 一些特殊規定字符
①\n 換行
②\f 清屏并換頁
③\r 回車
④\t Tab符
⑤\xhh 表示一個ASCII碼用16進表示,
⑥其中hh是1到2個16進制數
?
> sprintf函數跟printf相似,但不打印,而是返回格式化后的文字,其他的與printf一樣。
# 常用的字符串格式化函數
###### 1. 去除空格和字符串填充補函數
* 函數:`ltrim( ) `
```
語法: string ltrim(string str[, string charlist] );
```
返回值: 字符串
本函數用來刪去字符串中的前導空格 (whitespace)。
* 函數:`rtrim( )` (還有個別名:chop()
```
語法: string rtrim(string str[, string charlist] );
```
返回值: 字符串
本函數用來刪去字符串中的后綴空格 (whitespace)。
* 函數:`trim( )`
截去字符串首尾的空格。
```
語法: string trim(string str[, string charlist] );
```
返回值: 字符串
本函數返回字符串 string 首尾的空白字符去除后的字串。
* 函數:`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. 字符串大小寫的轉換
* 函數: `strtolower( )`
```
語法: string strtolower(string str);
```
本函數將字符串 str 全部變小寫字符串。
* 函數: `strtoupper( )`
```
語法: string strtoupper(string str);
```
本函數將字符串 str 全部變大寫字符串。
* 函數:`ucfirst( )`
將字符串第一個字符改大寫。
```
語法: string ucfirst(string str);
```
本函數返回字符串 str 第一個字的字首字母改成大寫。
* 函數:`ucwords( )`
將字符串每個字第一個字母改大寫。
```
語法: string ucwords(string str);
```
本函數返回字符串 str 每個字的字首字母全都改成大寫。
###### 3. 和HTML標簽相關聯的字符串格式化
* 函數:`nl2br( )`
```
語法:string nl2br ( string string )
```
將字符串中”\n”轉成HTML換行符<br / >
* 函數:`htmlspecialchars()`
```
語法:string htmlspecialchars ( string string [, int quote_style [, string charset]] )
```
* 函數: `htmlentities()`
```
語法:string htmlentities ( string string [, int quote_style [, string charset]] )
```
可以將所有的非ASCII碼轉換成對應實體代碼。
```
<?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);
?>
```
* 函數:`string strip_tags()`
```
語法:string strip_tags ( string str [, string allowable_tags] )
```
刪除HTML的標簽函數
```
<?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. 其他字符串格式化函數
* 函數: `strrev( ) `
顛倒字符串。將字符串前后顛倒。
```
語法: string strrev(string string);
```
* 函數: `strlen( ) `
取得字符串長度。
```
語法: int strlen(string str);
```
本函數返回指定的字符串長度。
* 函數:`number_format()`
```
語法:string number_format ( float number [, int decimals [, string dec_point, string thousands_sep]] )
```
格式貨幣、數字、時間等。
* 函數:`md5()` 加密函數
```
格式:string md5 (string str [, bool raw_output] )
```
# 字符串比較函數
PHP中,有多種方法可以對字符串進行比較,除了可以直接使用條件運算符(<, >, ==)加以比較外。
按字節進行字符串的比較
`strcmp()`;(整個比較是否相同)
`strncmp()`;(指定比較長度的字符串比較)
`strcasecmp()`; (不區分大小寫的全串比較)
按自然排序法時行字符串的比較
`strnatcmp(`);
字符串的模糊比較
`similar_text()`; (返回相似字符串的個數)
# 字符串的分割與拼裝
* `explode`?--?使用一個字符串分割另一個字符串
```
語法:array explode ( string separator, string string [, int limit] )
```
此函數返回由字符串組成的數組,每個元素都是 string 的一個子串,它們被字符串 separator 作為邊界點分割出來。如果設置了 limit 參數,則返回的數組包含最多 limit 個元素,而最后那個元素將包含 string 的剩余部分。 例如:
```
$pizza??= "piece1 piece2 piece3";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
```
* `implode()`
用一組較小的字符串創建一個大字符串。
```
格式:string implode ( string glue, array pieces )
```
第一個參數glue是放在第二個參數pieces的元素之間的字符串。可以像下面這樣重建簡單的逗號分隔的字符串。
例如:
```
$array = array('lastname','email','phone');
$comma_separated = implode(',', $array);
echo $comma_separated;
//lastname,email,phone
```
# 字符串的截取
* 函數:`substr( ) `
取部份字符串。
```
語法: string substr(string string, int start, int [length]);
```
返回值: 字符串
本函數將字符串 string 的第 start 位起的字符串取出 length 個字符,若省略參數 length,則取到字符串末尾 。若 start 為負數,則從字符串尾端往前開始提取。如果length為整數,表示返回length個字符,若為負數,則表示取到倒數第 length 個字符。
# 字符串的查找:
* 函數: `strstr( )` 別名:`strchr( ) `
返回字符串中某字符串開始處至結束的字符串。
```
語法: string strstr(string haystack, string needle);
```
返回值: 字符串
本函數將 needle 最先出現在 haystack 處起至 haystack 結束的字符串返回。若找不到 needle 則返回 false。
* 函數: `strrchr()`
取得某字符最后出現的位置。
```
語法: string strrchr(string haystack, string needle);
```
本函數用來尋找字符串 haystack 中的字符 needle 最后出現位置,并將此位置起至字符串 haystack 結束之間的字符串返回。若沒有找到 needle 則返回 false。
* 函數:`strpos() `
尋找字符串中某字符最先出現的位置。默認從 0 開始。
```
語法: int strpos(string haystack, string needle, int [offset]);
```
本函數用來尋找字符串 haystack 中的字符 needle 最先出現的位置。若找不到指定的字符,則返回 false 值。參數 offset 可省略,用來表示從 offset 開始找。
* 函數:`strrpos( ) `
尋找字符串中某字符最后出現的位置。
```
語法: int strrpos(string haystack, char needle);
```
返回值: 整數
本函數用來尋找字符串 haystack 中的字符 needle 最后出現的位置。若找不到指定的字符,則返回 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. 自定義一個函數:string getFileType(String $name); 求一個文件的后綴名
例如:調用時傳入一個文件名的字串如:”a.txt”,哪個返回結果為”.txt”;
2. 使用字串函數按要求輸出結果:
a)將102這個數字分別以以二進制、八進制、十六進制輸出
b)將12.123乘以2后保留小數位兩位輸出。
c)將字串#1024*兩側的*號與#號去除后輸出。
d)將字串strtoupper傳化成大寫后倒敘輸出。
e)將字串<div class="bord02"></div>保持原樣輸出。
f)將10:20:30:40:50中:號換成,號
3. 做一個網站訪問的計數器。在網頁中輸出:網站訪問:1253次,而且每次刷新數量都加一。(提示:采用文本存放計數信息)。
4. 定義一個字串的大小寫轉換函數: (可參考:chr( )和ord( ))
- 前言
- Ⅰ.PHP基礎知識
- 1.PHP基本語法(一)
- 2.PHP基本語法(二)
- 3.流程控制結構
- 4.PHP函數
- 5.數組
- 6.字符串
- 7.PHP正則表達式
- 8.PHP的日期和時間
- 9.GD庫圖像處理
- 10.文件處理系統
- 11.文件上傳和下載
- 12.數據庫之MySQL(概述)
- Ⅱ.ThinkPHP5入門實踐
- 一、先看到頁面
- 1.1只展示頁面
- 1.2給視圖傳遞數據
- 1.3使用公共模板
- 1.4使用模板布局
- 二、簡單的數據庫操作
- (1)查
- (2)增
- (3)改
- (4)刪
- (5)鏈式操作
- 三、初級-階段性綜合應用
- (1)注冊
- (2)登錄
- 四、各種基本操作
- 1.操作Session
- 2.操作Cookie
- 3.文件上傳
- 五、富文本編輯器
- 集成wangEditor
- 集成UEditor
- 六、驗證碼
- 圖片驗證碼
- Ⅲ.常用類庫的使用
- 一、PHPExcel表格導入
- 二、PHPExcel表格導出
- 三、阿里大于短信驗證碼
- 四、時間戳操作Time
- 五、郵件發送
- 六、PHP操作Python
- Ⅳ.實例講解
- 一、病房管理系統
- 寫在前面
- 1.引導頁
- 2.公共模板
- 3.登錄
- 4.功能引導頁集合
- 5.修改密碼
- 6.員工信息注冊
- 7.員工信息更新
- 8.員工信息刪除
- 9.病人信息注冊
- 10.病人信息更新
- 11.出院手續辦理
- 12.病人信息刪除
- 13.科室信息查詢
- 14.醫護信息查詢
- 15.病房信息查詢
- 16.病歷信息查詢
- 加群驗證
- 必看推薦閱讀【不斷更新】