PHP字符串处理的思考与记录
来源:互联网 发布:添加网络打印机搜不到 编辑:程序博客网 时间:2024/05/29 19:21
- 判断字符串是否为空
- 判断字符串是不是全是空格
- 将字符串以空格分割为数组
- 将16进制字符串转换为10进制
- 判断一个字符串是否都是空格
判断字符串是否为空
判断字符串为不为空,不能使用empty,因为empty会认为’0’也是空的
$s = '0';if(empty($s)) { var_dump('s为空');} else { var_dump('s不为空');}
输出
"s为空"
‘0’ 显然是不为空的,所以使用empty判断字符串是否为空就是个陷阱!
后面改进为,方法一:
if(!isset($s) || $s === '') { var_dump('s为空');} else { var_dump('s不为空');}
输出
$s = array(); //输出:"s不为空"$s = 0; //输出:"s不为空"$s = '0'; //输出:"s不为空"$s = ''; //输出:"s为空"$s = null; //输出:"s为空"$s = NULL; //输出:"s为空"$s = 'null'; //输出:"s不为空"
数组和数字也被判定成不为空了。
不过既然是弱类型语言,到时候这些也可以转为字符串格式来使用,所以关系不大。
但是在特殊情况下,需要更严格的检查方案,则需要再改进下:
方法二:
if(!isset($s) || !is_string($s) || strlen($s) == 0) { var_dump('s为空');} else { var_dump('s不为空');}
先判断有没有赋值,然后判断是不是字符串,最后判断字符串长度是不是为0,有了三重保险,输出:
$s = array(); //输出:"s为空"$s = 0; //输出:"s为空"$s = '0'; //输出:"s不为空"$s = ''; //输出:"s为空"$s = null; //输出:"s为空"$s = NULL; //输出:"s为空"$s = 'null'; //输出:"s不为空"
这样把非字符串类型也排除在外了。
使用什么方法判定字符串为不为空要根据具体需求,如果对类型不那么严格,用方法一;如果只允许字符串,使用方法二。
判断字符串是不是全是空格
$is_space = ctype_space($text);
如果全是空格,返回true;如果不是,返回false。
将字符串以空格分割为数组
$test_array = explode(' ', $test_string);
如果使用上面的方式,那就太单纯了,假如字符串包含多个空格怎么办?
需要使用以下方法:
$test_array = preg_split('#\s+#', $test_string);
将16进制字符串转换为10进制
$a = '0x000000010184f2fc';// 方法一$b = intval($a, 16);var_dump($b); // 输出: 4320457468// 方法二$c = base_convert($a, 16, 10);var_dump($c); // 输出: 4320457468
intval()函数可以将字符串转为10进制整数
参数一为要转换的数字(字符串类型)
参数二是可选参数,用来指定基底,默认是10
也就是说,字符串为‘0x’开头,是16进制格式,参数二要指定为16
字符串为‘0’开头,是8进制格式,参数二要指定为8
返回值为10进制整数;如果不能识别该字符串,则返回0
base_convert()函数也可以用来转换进制,只不过返回的还是字符串类型的数字
参数一为要转换的数字(字符串类型)
参数二为当前的进制
参数三为要转换的进制
返回值为相应进制的数字(字符串类型);如果字符串不能识别,则返回‘0’。
判断一个字符串是否都是空格
方法一,使用正则表达式判断:
$test = " \t ";$pattern = '/^(\s+)$/';$is_match = preg_match($pattern, $test);if ($is_match) { var_dump('都是空格');} else { var_dump('不都是空格');}// 输出:都是空格
‘\t’ 制表符也是空格。
方法二,使用ctype_space()函数:
$test = " \t ";$is_match = ctype_space($test);if ($is_match) { var_dump('都是空格');} else { var_dump('不都是空格');}
0 0
- PHP字符串处理的思考与记录
- php 字符串的处理
- php编码与字符串处理
- PHP处理日志的一点思考
- PHP对字符串的处理
- [Lpp]PHP字符串的处理
- php中处理字符串与数组总结
- 记录几个用到的字符串处理函数。
- 记录一下C++和C#中的字符串处理与编码格式的问题
- php处理分布式事务的思考(转)
- shell处理字符串记录
- 字符串处理错误记录
- PHP记录 字符串 函数
- 代码中“抛异常”与“记录log"的思考
- 三年日记-------------记录每天的工作与思考。
- php 字符串与二进制字符串的转换
- PHP对HTML编码字符串的处理
- PHP对HTML编码字符串的处理
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- 1004. Counting Leaves
- Andorid Studio 集成 Google Protocol Buffer(简称protobuf)
- 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向
- android listview 中adapter中 按钮点击跳 activity
- PHP字符串处理的思考与记录
- 解决java写xml中文乱码问题
- 单点登录(SSO)的核心--kerberos身份认证协议技术参考
- 页面打印总结
- 杭电2020
- 高级查询
- Echarts3 使用详解
- perl head 请求
- 安卓BottomSheet实现——动态加载视图