[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.病历信息查询
- 加群验证
- 必看推荐阅读【不断更新】