Statement on glibc/iconv Vulnerability

str_starts_with

(PHP 8)

str_starts_with检查字符串是否以指定子串开头

说明

str_starts_with(string $haystack, string $needle): bool

执行大小写区分的检查,表明 haystack 是否以 needle 开头。

参数

haystack

在其中搜索的字符串。

needle

要在 haystack 中搜索的子串。

返回值

如果 haystackneedle 开头,返回 true,否则返回 false

示例

示例 #1 使用空字符串 ''

<?php
if (str_starts_with('abc', '')) {
echo
"All strings start with the empty string";
}
?>

以上示例会输出:

All strings start with the empty string

示例 #2 展示大小写区分

<?php
$string
= 'The lazy fox jumped over the fence';

if (
str_starts_with($string, 'The')) {
echo
"The string starts with 'The'\n";
}

if (
str_starts_with($string, 'the')) {
echo
'The string starts with "the"';
} else {
echo
'"the" was not found because the case does not match';
}

?>

以上示例会输出:

The string starts with 'The'
"the" was not found because the case does not match

注释

注意: 此函数可安全用于二进制对象。

参见

  • str_contains() - 确定字符串是否包含指定子串
  • str_ends_with() - 检查字符串是否以指定子串结尾
  • stripos() - 查找字符串首次出现的位置(不区分大小写)
  • strrpos() - 计算指定字符串在目标字符串中最后一次出现的位置
  • strripos() - 计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写)
  • strstr() - 查找字符串的首次出现
  • strpbrk() - 在字符串中查找一组字符的任何一个字符
  • substr() - 返回字符串的子串
  • preg_match() - 执行匹配正则表达式

add a note

User Contributed Notes 1 note

up
1
sunyanzi at aliyun dot com
2 hours ago
This function is astonishingly fast, I think you should always use it.

See my test code below, uncomment specific lines and run it yourself to see the effect.

<?php
$str
= sha1( '0' ); // b6589fc6ab0dc82cf12099d1c2d40ab994e8410c

$results = [];

for (
$j = 0; $j < 100; ++ $j ) {

$time = microtime( true );

for (
$i = 0; $i < 999999; ++ $i )

// if ( 'b6589f' === substr( $str, 0, 6 ) ); # 0.53781658887863
// if ( 'abcdef' === substr( $str, 0, 6 ) ); # 0.54560388565063

// if ( 0 === strpos( $str, 'b6589f' ) ); # 0.48515980958939
// if ( 0 === strpos( $str, 'abcdef' ) ); # 0.53281677722931

// if ( str_starts_with( $str, 'b6589f' ) ); # 0.29601020097733
// if ( str_starts_with( $str, 'abcdef' ) ); # 0.30969516038895

// if (
// 'b' === $str[0] && '6' === $str[1] && '5' === $str[2] &&
// '8' === $str[3] && '9' === $str[4] && 'f' === $str[5]
// ); # 1.6171971583366

$results[] = microtime( true ) - $time;

}

echo
array_sum( $results ) / 100;
To Top