PHP中字符串函数库常用函数解析 -- PHP 学习 (十一)
常用字符串函数分类:
- 字符串长度, 字符串查找, 字符串大小写转换, 字符串截取, 字符串 ASCII, 字符串加密, 比较, 拆分, 合并, 格式化字符串, 其他常用
php 手册字符串函数地址:
https://www.php.net/manual/zh/ref.strings.php
乍看一眼, 哇塞, 一箩筐函数...
部分常用函数讲解:
- is_string(): 检测变量是否是字符串
is_string($var)
如果 $var 是字符串类型返回 true, 否则返回 false
- strlen(): 获取字符串长度
strlen($str)
返回给定的字符串 $str 的长度
特别注明: strlen
编码 gb2312 下, 一个汉字返回的是 2 个字节长度, utf-8 下一个汉字返回的是 3 个字节长度, 要想计算字符的长度, 需要用 mb_strlen
: 多字节的字符被计为 1
- strtolower(): 将字符串转化为小写
strtolower($str)
将 $str 中所有的字母字符转换为小写并返回
- strtoupper(): 将字符串转化为大写
strtoupper($str)
将 $str 中所有的字母字符转换为大写并返回。
- ucfirst(): 将字符串的首字母转换为大写
ucfirst ( string $str )
将 str 的首字符(如果首字符是字母)转换为大写字母,并返回这个字符串
- ucwords(): 将字符串中每个单词的首字母转换为大写
ucwords ( string $str [, string $delimiters = " \t\r\n\f\v" ] )
将 $str 中每个单词的首字符(如果首字符是字母)转换为大写字母,并返回这个字符串。
这里单词的定义是紧跟在 $delimiters 参数之后的子字符串。
$delimiters 单词分割字符, 默认:空格符、制表符、换行符、回车符、水平线以及竖线
<?php
header('content-type: text/html;charset=utf-8');
// is_string, strlen, strtoupper, strtolower, ucfirst, ucwords
$name = 'guoyou.li';
$age = 24;
var_dump(is_string($name)); // => bool(true)
echo '<br />';
var_dump(is_string($age)); // => bool(false)
echo '<br />';
echo strlen($name); // => 9
echo '<br />';
echo strtoupper($name); // => GUOYOU.LI
echo '<br />';
$str = 'PHP';
echo strtolower($str); // => php
echo '<br />';
echo ucfirst($name); // => Guoyou.li
echo '<br />';
$name = 'li guo you';
echo ucwords($name); // => Li Guo You
echo '<br />';
$name = 'li.guo.you,hello';
echo ucwords($name, '.,'); // => Li Guo You
- ord(): 转换字符串第一个字节为 0-255 之间的值
ord($str)
解析$str 二进制值第一个字节为 0 到 255 范围的无符号整型类型
该函数是 chr()
的互补函数
- chr(): 返回指定的字符
chr ( int $ascii ) : string
返回相对应与 ascii 所指定的单个字符
此函数与 ord()
是互补的
- substr(): 返回字符串的子串
substr ( string $string , int $start [, int $length ] ) : string
返回字符串 $string 由 $start 和 $length 参数指定的子字符串。
如果 $start 是非负数,返回的字符串将从 $string 的 $start 位置开始,从 0 开始计算。例如,在字符串 “abcdef” 中,在位置 0 的字符是 “a”,位置 2 的字符串是 “c” 等等。
如果 $start 是负数,返回的字符串将从 $string 结尾处向前数第 $start 个字符开始。
如果 $string 的长度小于 $start,将返回 FALSE。
- strcmp(): 二进制安全字符串比较
strcmp ( string $str1 , string $str2 ) : int
如果 $str1 小于 $str2 返回 < 0; 如果 $str1 大于 $str2 返回 > 0;如果两者相等,返回 0。注意该比较区分大小写
- strcasecmp(): 二进制安全比较字符串(不区分大小写)
strcasecmp ( string $str1 , string $str2 ) : int
和 strcmp 一样的功能, 该比较区分大小写
- strpos(): 查找字符串首次出现的位置
**strpos** ( string $haystack , $needle [, int $offset = 0 ] ) : int
返回 $needle 在 $haystack 中首次出现的数字位置。
$haystack : 在该字符串中进行查找。
如果 $needle 不是一个字符串,那么它将被转换为整型并被视为字符的顺序值。
如果提供了 $offset 参数,搜索会从字符串该字符数的起始位置开始统计。 如果是负数,搜索会从字符串结尾指定字符数开始。
返回 $needle 存在于 $haystack 字符串起始的位置(独立于 $offset)。同时注意字符串位置是从0开始,而不是从1开始的。
如果没找到 $needle,将返回 FALSE。
- stripos()
和上面的 strpos
一样的功能, 此函数不区分大小写
- strrpos(): 计算指定字符串在目标字符串中最后一次出现的位置
用法和 strpos
类似,
- strtipos(): 计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写)
和 strrpos
类似
<?php
header('content-type: text/html;charset=utf-8');
// ord, chr, substr, strcmp, strcasecmp, strpos, stripos, strrpos, strripos
echo ord('a'); // => 97
echo '<br />';
echo ord('A'); // => 65
echo '<br />';
echo chr('98'); // => b
echo '<br />';
$name = 'guoyou.li';
echo substr($name, 3, 3); // => you
echo '<br />';
echo substr($name, -2); // => li
echo '<br />';
var_dump(substr($name, 10)); // => bool(false)
echo '<br />';
echo strcmp('a', 'b'); // => -1
echo '<br />';
echo strcmp('F', 'a'); // => -1
echo '<br />';
echo strcasecmp('F', 'a'); // => 5
echo '<br />';
echo strpos('GUOyou.li', 'u'); // => 5
echo '<br />';
echo stripos('GUOyou.li', 'u'); // => 1
echo '<br />';
echo strpos('guoyou.li', 'o', 3); // => 4
echo '<br />';
echo strrpos('li.guoyou.LI', 'i'); // => 1
echo '<br />';
echo strripos('li.guoyou.LI', 'i'); // => 11
- strip_tags(): 从字符串中从字符串中去除 HTML 和 PHP 标记
strip_tags ( string $str [, string $allowable_tags ] ) : string
该函数尝试返回给定的字符串 $str 去除空字符、HTML 和 PHP 标记后的结果。
使用可选的第二个参数指定不被去除的字符列表。
- trim(): 去除字符串首尾处的空白字符(或者其他字符)
trim ( string $str [, string $character_mask = " \t\n\r\0\x0B" ] ) : string
此函数返回字符串 $str 去除首尾空白字符后的结果。如果不指定第二个参数,trim() 将去除这些字符:
- " " (ASCII 32 (0x20)),普通空格符。
- "\t" (ASCII 9 (0x09)),制表符。
- "\n" (ASCII 10 (0x0A)),换行符。
- "\r" (ASCII 13 (0x0D)),回车符。
- "\0" (ASCII 0 (0x00)),空字节符。
- "\x0B" (ASCII 11 (0x0B)),垂直制表符。
可选参数,过滤字符也可由 $character_mask 参数指定
- ltrim(): 删除字符串末端的空白字符(或者其他字符)符(或其他字符)
语法同上 trim()
- rtrim()
语法同上 trim()
- join():
join
是 implode 的别名
作用: 将一个一维数组的值转化为字符串
语法: implode ( string $glue , array $pieces ) : string
用 $glue 将一维数组的值连接为一个字符串。
- md5(): 计算字符串的 MD5 散列值
md5 ( string $str [, bool $raw_output = FALSE ] ) : string
返回值: 以 32 字符十六进制数字形式返回散列值。
如果可选的 $raw_output 被设置为 TRUE,那么 MD5 报文摘要将以16字节长度的原始二进制格式返回。
可以用来做密码加密处理
- sha1(): 计算字符串的 sha1 散列值
sha1 ( string $str [, bool $raw_output = false ] ) : string
如果可选的 raw_output 参数被设置为 TRUE, 那么 sha1 摘要将以 20 字符长度的原始格式返回, 否则返回值是一个 40 字符长度的十六进制数字。
返回 sha1 散列值字符串。
- empty(): 检查一个变量是否为空
判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于 FALSE,那么它会被认为不存在。如果变量不存在的话,empty() 并不会产生警告。
以下的东西被认为是空的:
- "" (空字符串)
- 0 (作为整数的0)
- 0.0 (作为浮点数的0)
- "0" (作为字符串的0)
- NULL
- FALSE
- array() (一个空数组)
- $var; (一个声明了,但是没有值的变量)
<?php
header('content-type: text/html;charset=utf-8');
// strip_tags, trim, ltrim, rtrim, join(implode), md5, sha1, empty
$html = '<span>2</span><span>3</span><span>4</span><a href="index.php">走起</a>';
echo strip_tags($html); // => 234走起
echo '<br />';
echo strip_tags($html, '<a>'); // => 234<a href="index.php">走起</a>
echo '<br />';
$str = ' guoyou.li ';
echo 'a'.trim($str).'a'; // => aguoyou.lia
echo '<br />';
echo 'a'.ltrim($str).'a'; // => aguoyou.li a
echo '<br />';
echo 'a'.rtrim($str).'a'; // => a guoyou.lia
echo '<br />';
$str = 'guoyououg';
echo trim($str, 'g'); // => uoyouou
echo '<br />';
$arr = array(1,2,3);
echo implode('-', $arr); // => 1-2-3
echo '<br />';
echo join('_', $arr); // => 1_2_3
echo '<br />';
$pwd = '1234345fd';
echo md5($pwd); // => 49654110fb9186395e75ab99d834e0e2
echo '<br />';
echo sha1($pwd); // => 1366643064ca7054b6a6fc0dc0daaa3bc8bd66c9
echo '<br />';
echo md5(sha1(md5($pwd))); // => 30b5b0a974259afbfb67d398a025ac15
echo '<br />';
var_dump(empty('12321')); // => bool(false)
echo '<br />';
var_dump(empty('')); // => bool(bool(true)
echo '<br />';
var_dump(empty('0')); // => bool(bool(true)
echo '<br />';
var_dump(empty(0)); // => bool(bool(true)
echo '<br />';
var_dump(empty(0.0)); // => bool(bool(true)
echo '<br />';
var_dump(empty(0.00)); // => bool(bool(true)
echo '<br />';
var_dump(empty('0.0')); // => bool(bool(false)
echo '<br />';
var_dump(empty(NULL)); // => bool(bool(true)
echo '<br />';
var_dump(empty(true)); // => bool(bool(false)
echo '<br />';
var_dump(empty(false)); // => bool(bool(true)
echo '<br />';
$arrs = array();
var_dump(empty($arrs)); // => bool(bool(true)
echo '<br />';
$empty;
var_dump(empty($empty)); // => bool(bool(true)
参考资料:
https://www.imooc.com/learn/726
https://www.php.net/manual/zh/ref.strings.php
上一篇: SQLServer数据导入Mongodb
下一篇: FCNs学习笔记01-重新实现作者的结果