php函数 二

一 字符串包含

1.1 str_starts_with(string $haystack, string $needle)

php8版本中新函数。

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

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

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();

 测试结果

5
8

1.2 str_ends_with(string $haystack, string $needle)

php8版本中新函数。

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

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

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();

 测试结果

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()函数的忽略大小写版本。

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();

 测试结果

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()函数的忽略大小写版本。

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();

 测试结果

int(0)
int(1)
int(16)
bool(false)
int(1)

1.7 strpbrk(string $string, string $characters)

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

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

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

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

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

 测试结果

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。
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();

 测试结果

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 附加的字符串列表,其中的字符将被视为单词的一部分。

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();

测试结果

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. 无对应内容,返回包含整个字符串的数组。
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();

 测试结果

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 不在这段文本中,那么将返回空字符串。
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();

测试结果

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 的末尾开始统计的。

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();

测试结果

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){} 捕获不到异常……


 

你可能感兴趣的:(php,php)