欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PHP中字符串函数库常用函数解析 -- PHP 学习 (十一)

程序员文章站 2022-06-12 16:37:44
...

常用字符串函数分类:

  • 字符串长度, 字符串查找, 字符串大小写转换, 字符串截取, 字符串 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" ] )

  1. 将 $str 中每个单词的首字符(如果首字符是字母)转换为大写字母,并返回这个字符串。

  2. 这里单词的定义是紧跟在 $delimiters 参数之后的子字符串。

  3. $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

  1. 返回字符串 $string 由 $start 和 $length 参数指定的子字符串。

  2. 如果 $start 是非负数,返回的字符串将从 $string 的 $start 位置开始,从 0 开始计算。例如,在字符串 “abcdef” 中,在位置 0 的字符是 “a”,位置 2 的字符串是 “c” 等等。

  3. 如果 $start 是负数,返回的字符串将从 $string 结尾处向前数第 $start 个字符开始。

  4. 如果 $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

  1. 返回 $needle 在 $haystack 中首次出现的数字位置。

  2. $haystack : 在该字符串中进行查找。

  3. 如果 $needle 不是一个字符串,那么它将被转换为整型并被视为字符的顺序值。

  4. 如果提供了 $offset 参数,搜索会从字符串该字符数的起始位置开始统计。 如果是负数,搜索会从字符串结尾指定字符数开始。

  5. 返回 $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

  1. 该函数尝试返回给定的字符串 $str 去除空字符、HTML 和 PHP 标记后的结果。

  2. 使用可选的第二个参数指定不被去除的字符列表。

  • trim(): 去除字符串首尾处的空白字符(或者其他字符)

trim ( string $str [, string $character_mask = " \t\n\r\0\x0B" ] ) : string

此函数返回字符串 $str 去除首尾空白字符后的结果。如果不指定第二个参数,trim() 将去除这些字符:

  1. " " (ASCII 32 (0x20)),普通空格符。
  2. "\t" (ASCII 9 (0x09)),制表符。
  3. "\n" (ASCII 10 (0x0A)),换行符。
  4. "\r" (ASCII 13 (0x0D)),回车符。
  5. "\0" (ASCII 0 (0x00)),空字节符。
  6. "\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

  1. 返回值: 以 32 字符十六进制数字形式返回散列值。

  2. 如果可选的 $raw_output 被设置为 TRUE,那么 MD5 报文摘要将以16字节长度的原始二进制格式返回。

  3. 可以用来做密码加密处理

  • sha1(): 计算字符串的 sha1 散列值

sha1 ( string $str [, bool $raw_output = false ] ) : string

  1. 如果可选的 raw_output 参数被设置为 TRUE, 那么 sha1 摘要将以 20 字符长度的原始格式返回, 否则返回值是一个 40 字符长度的十六进制数字。

  2. 返回 sha1 散列值字符串。

  • empty(): 检查一个变量是否为空
  1. 判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于 FALSE,那么它会被认为不存在。如果变量不存在的话,empty() 并不会产生警告。

  2. 以下的东西被认为是空的:

  • "" (空字符串)
  • 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