php第四天-字符串
0x01 字符串
1.1 字符串的处理方式
在不同的语言中,字符串的处理方式不同:在C中字符串是作为字节数组处理的;在Java中字符串是作为对象处理的;而在php中则把字符串作为基本数据类型来处理。
通常对字符串的处理涉及字符串的格式化、字符串的分割和连接、字符串的比较、以及字符串的查找、匹配和替换。
1.2 字符串类型的特点
0x02 常用的字符串输出函数
常用的输出字符串函数:
echo( ) -- 输出字符串
print( ) -- 输出一个字符串
die( ) -- 输出一条消息,并退出当前脚本
printf( ) -- 输出格式化字符串
sprintf( )-- 把格式化的字符串写入一个变量中
注意:这里的printf与sprintf都是格式化字符串。
字符串转换格式:
%% 返回百分比符号
%b 二进制数
%c 依照ASCII值的字符
%d 带符号十进制数
%e 可续计数法(如1.5e3)
%u 无符号十进制数
%f或%F 浮点数
%o 八进制数
%s 字符串
%x或%X 十六进制数
示例:
<?php
echo 'hello','word','!';
?>
输出helloword!
<?php
print "Hello world";
?>
输出:Hello world
<?php
die("1")
?>
输出1
格式:printf("参数1",参数2):参数1=按什么格式输出;参数2=输出的变量。
<?php
$num=10.000;
printf("%d<br/>",$num); //10
printf("%s<br/>",$num); //10
printf("%f<br/>",$num); //10.000000
printf("%b<br/>",$num); //1010
printf("%o<br/>",$num); //12
?>
输出

<?php
$num=10.000;
$a=sprintf("%d",$num);
echo $a;
?>
输出10
注意:双引号可以包含单引号,但单引号不会被解析;单引号也能包含双引号
0x03 常用的字符串格式化函数
去除空格和字符串填充补函数
字符串大小写的转换
和HTML标签相关联的字符串格式化
其他字符串格式化函数
3.1 去除空格和字符串填充补函数
3.1.1
函数:ltrim( )
语法: string ltrim(string str[, string charlist] );
返回值: 字符串
本函数用来删去字符串中的前导空格 (whitespace)。
<?php
$str = " yicunyiye";
echo "Without ltrim: " . $str;
echo "<br>";
echo "With ltrim: " . ltrim($str);
?>
输出
Without ltrim: yicunyiye
With ltrim: yicunyiye
3.1.2
函数:rtrim( ) (还有个别名:chop())
语法: string rtrim(string str[, string charlist] );
返回值: 字符串
本函数用来删去字符串中的后缀空格 (whitespace)。
<?php
$str = "yicunyiye ";
echo "Without rtrim: " . $str;
echo "With rtrim: " . rtrim($str);
echo "Without rtrim: " . $str;
?>
输出
Without rtrim: yicunyiye With rtrim: yicunyiyeWithout rtrim: yicunyiye
3.1.3
函数:trim( )
截去字符串首尾的空格。
语法: string trim(string str[, string charlist] );
返回值: 字符串
本函数返回字符串 string 首尾的空白字符去除后的字串。
<?php
$str = "\n\n\nyicunyiye\n\n\n";
echo "Without trim: " . $str;
echo "<br>";
echo "With trim: " . trim($str);
?>
输出
Without trim:
yicunyiye
With trim: yicunyiye
3.1.4
函数: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 = "yicunyiye";
var_dump(str_pad($input,100,".",STR_PAD_RIGHT));
var_dump(str_pad($input,50,"=", STR_PAD_LEFT));
var_dump(str_pad($input,100,"_", STR_PAD_BOTH));
var_dump(str_pad($input,50 ,"___"));
?>
输出
string(100) "yicunyiye..........................................................................................." string(50) "=========================================yicunyiye" string(100) "_____________________________________________yicunyiye______________________________________________" string(50) "yicunyiye_________________________________________"
3.2 字符串大小写的转换
3.2.1
函数: strtolower( )
语法: string strtolower(string str);
本函数将字符串 str 全部变小写字符串。
函数: strtoupper( )
语法: string strtoupper(string str);
本函数将字符串 str 全部变大写字符串。
函数:ucfirst( )
将字符串第一个字符改大写。
语法: string ucfirst(string str);
本函数返回字符串 str 第一个字的字首字母改成大写。
函数:ucwords( )
将字符串每个字第一个字母改大写。
语法: string ucwords(string str);
本函数返回字符串 str 每个字的字首字母全都改成大写。
示例:
<?php
echo strtolower("yicunyiye<br>");
echo strtoupper("yicunyiye<br>");
echo ucfirst("yicunyiye<br>");
echo ucwords("yicunyiye<br>");
?>
输出
yicunyiye YICUNYIYE Yicunyiye Yicunyiye
3.3 和HTML标签相关联的字符串格式化
函数:nl2br( )
语法:string nl2br ( string string )将字符串中”\n”转成HTML换行符“<br / >”
函数:htmlspecialchars()
语法:string htmlspecialchars ( string string [, int quote_style [, string charset]] )把指定特殊符号转换成实体,如<>
'&' :'&' '“':'"'
''' :''' '< ':'<'
'>' :'>'
函数: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 echo “\n”; // 保留 <p> echo strip_tags($text, '<p>');
//输出:<p>Test paragraph.</p> Other text
?>
示例:
<?php
echo nl2br("yicunyiye\n");
echo htmlspecialchars("<scRipT>alert(1)</scRIpt>");
echo strip_tags("Hello <b>world!</b>");
?>
输出
yicunyiye
Hello world!
延申:htmlspecialchars_decode():把一些预定义的 HTML 实体转换为字符
会被解码的 HTML 实体是:
& 解码成 & (和号)
" 解码成 " (双引号)
' 解码成 ' (单引号)
< 解码成 < (小于)
> 解码成 > (大于)
3.4 其他字符串格式化函数
函数: strrev( )
颠倒字符串。将字符串前后颠倒。
语法: string strrev(string string);
函数: strlen( )
取得字符串长度。
语法: int strlen(string str);
本函数返回指定的字符串长度。
示例:
<?php
$info = "yicunyiye";
var_dump(strrev($info));
var_dump($info);
var_dump(strlen($info))
?>
输出
string(9) "eyiynuciy" string(9) "yicunyiye" int(9)
函数:number_format()
语法:string number_format ( float number [, int decimals [, string dec_point, string thousands_sep]] )
格式货币、数字、时间等。
示例:
<?php
$str1 = "10000";
echo number_format($str1)."<br>";
?>
输出>10,000
函数:md5() 加密函数
格式:string md5 (string str [, bool raw_output] )
示例:
<?php
$str = "Hello";
echo md5($str);
?>
输出>8b1a9953c4611296a827abf8c47804d7
0x04 字符串比较函数
按字节顺序进行字符串比较
按自然顺序进行字符串比较
4.1 按字节顺序进行字符串比较
strcmp();(整个比较是否相同)
strncmp();(指定比较长度的字符串比较)
strcasecmp(); (不区分大小写的全串比较)
示例:
<?php
var_dump(strcmp("1233","123"));
var_dump(strncmp("1233","1233",'4'));
echo strnatcmp("2Hello world!","2Hello world!");
?>
输出
int(1) int(0) 0
4.2 按自然顺序进行字符串比较
strnatcmp();
示例:
<?php
echo strnatcmp("2Hello world!","10Hello world!");
echo "<br>";
echo strnatcmp("10Hello world!","2Hello world!");
?>
输出
-1
1
0x05 字符串其他函数
5.1 字符串的模糊比较
similar_text(); (返回相似字符串的个数)
示例:
<?php
similar_text("Hello World","Hello yicunyiye",$percent);
echo $percent;
?>
输出
46.1538461538
5.2 字符串的分割与拼装
explode -- 使用一个字符串分割另一个字符串
语法:array explode ( string separator, string string [, int limit] )
此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 separator 作为边界点分割出来。如果设置了 limit 参数,则返回的数组包含最多 limit 个元素,而最后那个元素将包含 string 的剩余部分。
implode()
用一组较小的字符串创建一个大字符串。
格式:string implode ( string glue, array pieces )
第一个参数glue是放在第二个参数pieces的元素之间的字符串。可以像下面这样重建简单的逗号分隔的字符串。
示例:
<?php
$info = "1,2,3";
var_dump(explode(",", $info));
$array = [1,2,3];
var_dump(implode(",",$array));
?>
输出
array(3) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" } string(5) "1,2,3"
5.3 字符串的截取
函数:substr( )
取部份字符串。
语法: string substr(string string, int start, int [length]);
返回值: 字符串
本函数将字符串 string 的第 start 位起的字符串取出 length 个字符,若省略参数 length,则取到字符串末尾 。若 start 为负数,则从字符串尾端往前开始提取。如果length为整数,表示返回length个字符,若为负数,则表示取到倒数第 length 个字符。
示例:
<?php
echo substr("Hello world",10)."<br>";
echo substr("Hello world",1)."<br>";
echo substr("Hello world",3)."<br>";
echo substr("Hello world",7)."<br>";
echo substr("Hello world",-1)."<br>";
echo substr("Hello world",-10)."<br>";
echo substr("Hello world",-8)."<br>";
echo substr("Hello world",-4)."<br>";
?>
输出
d
ello world
lo world
orld
d
ello world
lo world
orld
5.4 字符串的查找
函数: 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。
示例:
<?php
$info = "1234562789";
var_dump(strstr($info,"2"));
var_dump(strrchr($info,"2"));
?>
输出
string(9) "234562789" string(4) "2789"
函数: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 值。
示例:
<?php
echo strpos("hello, yicunyiye","yi");
echo "<br>";
echo strrpos("hello, yicunyiye","yi");
?>
输出
7
12
5.5 字符串的替换
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);
示例:
<?php
$info = "yicunyiye";
var_dump(str_replace("y","a",$info));
var_dump(str_replace(["y","c","e"],"a",$info));
var_dump(str_replace(["y","c","e"],["a","b","c"],$info));
?>
输出
string(9) "aicunaiae" string(9) "aiaunaiaa" string(9) "aibunaiac"
php第四天-字符串的更多相关文章
- 编写一个应用程序,利用数组或者集合, 求出"HELLO",“JAVA”,“PROGRAM”,“EXCEPTION”四个字符串的平均长度以及字符出现重复次数最多的字符串。
public class Number { public static void main(String[] args) { String[] arr = { "HELLO", & ...
- Mysql学习笔记(四)字符串函数
PS:终于看完了字符串函数,心都快碎了...涉及的函数真是太多了...感觉这里的字符串函数和JAVA里的基本都差不多了...基本上算是掌握了,但是想全记住那是不太可能的... 学习内容: 字符串函数的 ...
- ES6(四)字符串的扩展
1.字符的表示方式 最早在 \u0000-\uFFFF 之间的字符已经足够使用吗,每个字符占两个字节,超出范围,必须使用双字节形式表达, 即每个字符占四个字节.超出范围的字符,会被解读成 \uXX ...
- Java开发笔记(三十四)字符串的赋值及类型转换
不管是基本的char字符型,还是包装字符类型Character,它们的每个变量只能存放一个字符,无法满足对一串字符的加工.为了能够直接操作一连串的字符,Java设计了专门的字符串类型String,该类 ...
- Shell基础(四):字符串截取及切割、字符串初值的处理、基使用Shell数组、expect预期交互、使用正则表达式
一.字符串截取及切割 目标: 使用Shell完成各种Linux运维任务时,一旦涉及到判断.条件测试等相关操作时,往往需要对相关的命令输出进行过滤,提取出符合要求的字符串. 本案例要求熟悉字符串的常见处 ...
- 零基础学Java第四节(字符串相关类)
本篇文章是<零基础学Java>专栏的第四篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! String 本文章首发于公众号[编程攻略] 在Java中,我们经 ...
- 【Python基础学习四】字符串(string)
Python 字符串 字符串是 Python 中最常用的数据类型.可以使用引号('或")来创建字符串. 创建字符串很简单,只要为变量分配一个值即可.例如: var1 = 'hello' va ...
- Python学习笔记(四)字符串型
字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 在最新的Python 3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言 ...
- JNI/NDK开发指南(四)——字符串处理
转载请注明出处:http://blog.csdn.net/xyang81/article/details/42066665 从第三章中能够看出JNI中的基本类型和Java中的基本类型都是一一相应的,接 ...
- JavaScript进阶(四)js字符串转换成数字的三种方法
js字符串转换成数字的三种方法 在js读取文本框或者其它表单数据的时候获得的值是字符串类型的,例如两个文本框a和b,如果获得a的value值为11,b的value值为9 ,那么a.value要小于b. ...
随机推荐
- RabbitMQ set password
问题: -- ::09.387 ERROR oslo.messaging._drivers.impl_rabbit [req-51faf017-4f1f-4a24-ab79-624b302b839b ...
- Communication-Efficient Learning of Deep Networks from Decentralized Data
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! Proceedings of the 20th International Conference on Artificial Intell ...
- 《52讲轻松搞定网络爬虫》读书笔记 - Session和Cookie
为什么要用Session和Cookie? 简单一句话,因为Session和Cookie可以记录用户状态信息 嘶..这到底啥意思呢? 背景一:动态网页的出现 什么是静态网页 含义:一个网页的内容是HTM ...
- Hacker101 CTF 学习记录(一)
前言 苦力挖洞,靠运气赚点小钱.看着大佬严重,高危,再看看自己手上的低危,无危害默默流下了菜鸡的泪水 思路受局限,之前听学长推荐和同事聊到hacker101,因此通过hacker101拓展下漏洞利用思 ...
- Fitness - 05.08
倒计时237天 运动34分钟,共计8组,3.4公里.拉伸10分钟. 每组跑步2分钟(6.6KM/h),走路2分钟(6KM/h). 最近掉了几斤,所以今天状态感觉特别好. 虽然每天在拼命学习Unity, ...
- 令人蛋疼的错误提示 0xcdcdcdcd ,0xdddddddd ,0xfeeefeee ,0xcccccccc ,0xabababab
原文地址:http://www.cnblogs.com/pcchinadreamfly/archive/2012/04/26/2471317.html参考地址:http://blog.csdn.net ...
- unity中使用的着色器语言
在unity中,着色器编程使用了一列列的HLSL语言变种(也叫作Cg,但是大部分实际上两者都是一样的). 目前,为了在不同平台下保持最好的跨平台性, 取样贴图时,最好使用DX9风格 的HLSL. 着色 ...
- [V&N公开赛] CheckIn
V&N战队考核+招新,赵师傅出的Web题,做着感觉有点顶,趁热打铁写write up记录一下考察的知识点 这道题说是CheckIn其实还是有一定难度的(也可能是我太菜了),进入题目直接给出了f ...
- 520是秀恩爱吃狗粮,521才是真正的告白日,- Python告白神器用起来 !
网络情人节是信息时代的爱情节日,定于每年的5月20日和5月21日,该节日源于歌手范晓萱的<数字恋爱>中“520”被喻成“我爱你” ,以及音乐人吴玉龙的网络歌曲中“我爱你”与“网络情人”的紧 ...
- Spring源码学习(六)-spring初始化回调方法源码学习
1.spring官方指定了三种初始化回调方法 1.1.@PostConstruct.@PreDestory 1.2.实现 InitializingBean DisposableBean 接口 1.3. ...