6.PHP字符串

字符串的处理介绍

字符串的处理方式

在C语言中字符串是作为字节数组处理的。在Java语言中字符串是作为对象处理的。而php则把字符串作为基本数据类型来处理。通常对字符串的处理涉及字符串的 格式化 。 字符串的 分割连接 、字符串的 比较 、以及字符串的 查找匹配替换

常用的字符串输出函数

常用的输出字符串函数:
echo( ) -- 输出字符串
print( ) -- 输出一个字符串
die( ) -- 输出一条消息,并退出当前脚本
printf( ) -- 输出格式化字符串
sprintf( )-- 把格式化的字符串写入一个变量中
如:

echo 'aaa','bbbb','ccc';//输注多个值
$link=@mysql_connect(“”,””,””)or die(“失败”)
printf与sprintf

printfsprintf都是格式化字串:
字符串转换格式:
%% 返回百分比符号
%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( ))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,907评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,546评论 1 289
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,705评论 0 238
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,624评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,940评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,371评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,672评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,396评论 0 195
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,069评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,350评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,876评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,243评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,847评论 3 231
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,004评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,755评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,378评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,266评论 2 259

推荐阅读更多精彩内容