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.

Возвращаемые значения

Возвращает true, если haystack начинается с needle, false в противном случае.

Примеры

Пример #1 Использование пустой строки ''

<?php
if (str_starts_with('абв', '')) {
echo
"Все строки начинаются с пустой строки";
}
?>

Результат выполнения приведённого примера:

Все строки начинаются с пустой строки

Пример #2 Демонстрация чувствительности к регистру

<?php
$string
= 'Ленивая лиса перепрыгнула через забор';

if (
str_starts_with($string, 'Ленивая')) {
echo
"Строка начинается с 'Ленивая'\n";
}

if (
str_starts_with($string, 'ленивая')) {
echo
'Строка начинается с 'ленивая'';
} else {
echo
'"ленивая" не найдена, потому что регистр не соответствует';
}

?>

Результат выполнения приведённого примера:

Строка начинается с 'Ленивая'
"ленивая" не найдена, потому что регистр не соответствует

Примечания

Замечание: Эта функция безопасна для обработки данных в двоичной форме.

Смотрите также

  • 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
38 minutes 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