php函数 二

一 字符串包含

1.1 str_starts_with(string $haystack, string $needle)

php8版本中新函数。

检查字符串是否以指定子串开头,区分大小写。返回布尔值。

$haystack待判断的字符串,$needle需要查询的内容。

php 复制代码
function test1() {
    $str = "Qwe asd zxc 123";
    if (str_starts_with($str, '')) {
        echo __LINE__ . PHP_EOL; //5
    }
    if (str_starts_with($str, 'Qwe')) {
        echo __LINE__ . PHP_EOL; //8
    }
    if (str_starts_with($str, 'qwe')) {
        echo __LINE__ . PHP_EOL; //11
    }
}
test1();

测试结果

php 复制代码
5
8

1.2 str_ends_with(string $haystack, string $needle)

php8版本中新函数。

检查字符串是否以指定子串结尾。返回布尔值。区分大小写。

$haystack待判断的字符串,$needle需要查询的内容。

php 复制代码
function test3() {
    $str = "Qwe asd zxc 123 z";
    var_dump(str_ends_with($str, "Z"));
    var_dump(str_ends_with($str, "z"));
    var_dump(str_ends_with($str, "q"));
    var_dump(str_ends_with($str, "123"));
}
test3();

测试结果

php 复制代码
bool(false)
bool(true)
bool(false)
bool(false)

1.3 strstr(string $haystack, string $needle, bool $before_needle = false)

查找字符串的首次出现。返回字符串或布尔值。区分大小写。

1.4 stristr(string $haystack, string $needle, bool $before_needle = false)

strstr()函数的忽略大小写版本。

php 复制代码
function test4() {
    $str = "Qwe asd zxc 123 z";
    var_dump(strstr($str, "Qwe"));
    var_dump(strstr($str, "we"));
    var_dump(strstr($str, "we", true));
    var_dump(strstr($str, "q"));
    var_dump(stristr($str, "q"));
}
test4();

测试结果

php 复制代码
string(17) "Qwe asd zxc 123 z"
string(16) "we asd zxc 123 z"
string(1) "Q"
bool(false)
string(17) "Qwe asd zxc 123 z"

1.5 strpos(string $haystack, string $needle, int $offset = 0)

查找字符串首次出现的位置。计算从零开始,也就是返回1,代表字符串中第二个位置;偏移到字符串第二个字符,偏移量是2。区分大小写。返回整数或者布尔值。

第一个字符返回值为0,应该使用0===value判断。不存在返回false,应该使用false===value判断。

$offset 为偏移量。

1.6 stripos(string $haystack, string $needle, int $offset = 0)

strpos()函数的忽略大小写版本。

php 复制代码
function test5() {
    $str = "Qwe asd zxc 123 we";
    var_dump(strpos($str, "Qwe"));
    var_dump(strpos($str, "we"));
    var_dump(strpos($str, "we", 2));
    var_dump(strpos($str, "q"));
    var_dump(stripos($str, "WE"));
}
test5();

测试结果

php 复制代码
int(0)
int(1)
int(16)
bool(false)
int(1)

1.7 strpbrk(string $string, string $characters)

在字符串中查找一组字符的任何一个字符。

返回以找到的字符开始的子字符串。如果没有找到,则返回 false

$string 在string中查找characters字符串。

$characters 要查询的内容。区分大小写。

php 复制代码
function test7() {
    $str = "Qwe asd zxc 123 we";
    $info = strpbrk($str, 'a');
    var_dump($info);
    $info = strpbrk($str, 'A');
    var_dump($info);
}
test7();

测试结果

php 复制代码
string(14) "asd zxc 123 we"
bool(false)

1.8 preg_match()

执行匹配正则表达式。匹配到返回1,未匹配到返回0或者false。

参数

  1. $pattern 正则表达式
  2. $subject 需验证的字符串。 避免使用substr()。
  3. &$matches 匹配结果
  4. $flags 偏移量
  5. $offset 开始搜索位置

$flags说明

  1. PREG_OFFSET_CAPTURE 附加偏移量
  2. PREG_UNMATCHED_AS_NULL 使用该标记,未匹配的子组会报告为 null;未使用时,报告为空的 string。
php 复制代码
function test8() {
    $str = "Qwe asd zxc 123 we";
    $pattern = '/(?<=d).*(?=w)/';
    $result = preg_match($pattern, $str, $info, PREG_OFFSET_CAPTURE);
    var_dump($result);
    var_dump($info);
    $result = preg_match($pattern, $str, $info, PREG_OFFSET_CAPTURE, 8);
    var_dump($result);
    var_dump($info);
}
test8();

测试结果

php 复制代码
int(1)
array(1) {
  [0]=>
  array(2) {
    [0]=>
    string(9) " zxc 123 "
    [1]=>
    int(7)
  }
}
int(0)
array(0) {
}

1.9 str_word_count(string $string, int $format = 0, ?string $characters = null)

返回字符串中单词的使用情况。返回数组或整数

如果指定了 format 参数,返回值将是一个数组,数组的内容则取决于 format 参数。

$format

  1. 0 返回单词数量
  2. 1 返回一个包含 string 中全部单词的数组
  3. 2 返回关联数组。数组的键是单词在 string 中出现的数值位置,数组的值是这个单词

$characters 附加的字符串列表,其中的字符将被视为单词的一部分。

php 复制代码
function test9() {
    $str = "Qwe asd zxc 123 we";
    $info = str_word_count($str);
    var_dump($info);
    $info = str_word_count($str, 1);
    var_dump($info);
    $info = str_word_count($str, 0, "123456^ ^");
    var_dump($info);
    $info = str_word_count($str, 1, "123456^ ^");
    var_dump($info);
    $info = str_word_count($str, 2, "123456^ ^");
    var_dump($info);
}
test9();

测试结果

php 复制代码
int(4)
array(4) {
  [0]=>
  string(3) "Qwe"
  [1]=>
  string(3) "asd"
  [2]=>
  string(3) "zxc"
  [3]=>
  string(2) "we"
}
int(1)
array(1) {
  [0]=>
  string(18) "Qwe asd zxc 123 we"
}
array(1) {
  [0]=>
  string(18) "Qwe asd zxc 123 we"
}

被操作的字符串中数字会被过滤掉,除非在$characters中添加数字或需最为单词的字符。

没发现$format 设置为1或2中区别。

二 字符串分割

2.1 explode(string $separator, string $string, int $limit = PHP_INT_MAX)

使用一个字符串分割另一个字符串。

$separator 分隔符

$string 字符串

$limit 限制数量。

  1. 正数返回从0开始的指定长度内容,最后一个值为字符串剩余部分。
  2. 负数返回从末尾开始倒数的内容,直到数组开始,和substr长度的设置一个原理。
  3. 传0视为1,返回包含整个字符串的数组。
  4. 默认为内置常量PHP_INT_MAX,最大整数。
  5. 无对应内容,返回包含整个字符串的数组。
php 复制代码
function test6() {
    $str = "Qwe asd zxc 123 we";
    $arr2 = explode("W", $str);
    var_dump($arr2);
    $arr3 = explode(" ", $str, -2);
    var_dump($arr3);
    $arr1 = explode(" ", $str, 0);
    var_dump($arr1);
    $arr4 = explode(" ", $str, 1);
    var_dump($arr4);
    $arr5 = explode(" ", $str, 2);
    var_dump($arr5);
}
test6();

测试结果

php 复制代码
array(1) {
  [0]=>
  string(18) "Qwe asd zxc 123 we"
}
array(3) {
  [0]=>
  string(3) "Qwe"
  [1]=>
  string(3) "asd"
  [2]=>
  string(3) "zxc"
}
array(1) {
  [0]=>
  string(18) "Qwe asd zxc 123 we"
}
array(1) {
  [0]=>
  string(18) "Qwe asd zxc 123 we"
}
array(2) {
  [0]=>
  string(3) "Qwe"
  [1]=>
  string(14) "asd zxc 123 we"
}

2.2 substr(string $string, int $offset, ?int $length = null)

返回字符串字串。字符串长度小于偏移量返回空字符串。

$offset 偏移量。

  1. 为正数从0开始计算。
  2. 为负从尾开始计算,倒数指定的偏移量开始计算指定长度。

$length 指定长度。

  1. 为正数offset 处开始最多包括 length 个字符。最多返回到字符串结尾,即length大于字符串长度,返回到字符串结尾的长度。
  2. 为0,返回空字符串
  3. 为null返回整个字符串
  4. 为负,那么 string 末尾处的 length 个字符将会被省略。若 offset 是负数则从字符串尾部算起。如果 offset 不在这段文本中,那么将返回空字符串。
php 复制代码
function test10() {
    $str = "Qwe asd zxc 123 we";
    $info = substr($str, 2);
    var_dump($info);
    $info = substr($str, 2, 2);
    var_dump($info);
    $info = substr($str, 2, 20);
    var_dump($info);
    $info = substr($str, -10, 2);
    var_dump($info);
    $info = substr($str, -10, 20);
    var_dump($info);
    $info = substr($str, 0);
    var_dump($info);
}
test10();

测试结果

php 复制代码
string(16) "e asd zxc 123 we"
string(2) "e "
string(16) "e asd zxc 123 we"
string(2) "zx"
string(10) "zxc 123 we"
string(18) "Qwe asd zxc 123 we"

2.3 substr_count(string $haystack,string $needle,int $offset = 0,?int $length = null)

计算字串出现的次数。该函数返回 int。

$haystack中查找$needle字符串。

$offset 偏移量。开始计数的偏移位置。如果是负数,就从字符的末尾开始统计。

$length 指定偏移位置之后的最大搜索长度。如果偏移量加上这个长度的和大于 haystack 的总长度,则打印警告信息。 负数的长度 length 是从 haystack 的末尾开始统计的。

php 复制代码
function test11() {
    $str = "Qwe asd zxc 123 we";
    try
    {
        $info = substr_count($str, " ", 5, 5);
        var_dump($info);
    } catch (\Throwable $e) {
        var_dump($e->getTraceAsString());
    }
    try
    {
        $info = substr_count($str, " ", 5, 100);
        var_dump($info);
    } catch (\Throwable $e) {
        var_dump($e->getTraceAsString());
    }
    try
    {
        $info = substr_count($str, " ", -5, 5);
        var_dump($info);
    } catch (\Throwable $e) {
        var_dump($e->getTraceAsString());
    }
    try
    {
        $info = substr_count($str, " ", -5, 100);
        var_dump($info);
    } catch (\Throwable $e) {
        var_dump($e->getTraceAsString());
    }
}
test11();

测试结果

php 复制代码
int(1)
string(117) "#0 D:\workspace\php\test\test12.php(130): substr_count()
#1 D:\workspace\php\test\test12.php(150): test11()
#2 {main}"
int(1)
string(117) "#0 D:\workspace\php\test\test12.php(144): substr_count()
#1 D:\workspace\php\test\test12.php(150): test11()
#2 {main}"

我本地php8版本,cache(\Exception $e){} 捕获不到异常......

相关推荐
两个人的幸福10 天前
Windows 桌面应用自研 PHP 队列(下):完整代码与六大工程化优化
php
BingoGo12 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
JaguarJack12 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
用户30745969820713 天前
PHP 扩展——从入门到理解
php
鹏仔先生13 天前
拷贝漫画APP下载页PHP程序,后台带免费AI写作
php
云水一下13 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
xingpanvip13 天前
星盘接口开发文档:本命盘接口指南
android·开发语言·css·php·lua
酉鬼女又兒14 天前
零基础入门计算机网络运输层:端到端通信核心作用、端口号分类规则、复用分用工作机制及UDP与TCP协议全方位对比详解
网络·网络协议·tcp/ip·计算机网络·考研·udp·php
dog25014 天前
不要再继续优化 TCP
网络协议·tcp/ip·php
Channing Lewis14 天前
PHP 解析 Excel 的那些坑:一次“行号错位”引发的数据丢失
开发语言·php·excel