У меня есть viariable, который содержит что-то вроде этого ab_123456789
Как проверить первые три символа в переменной?
как я могу проверить, если переменная начинается с ab_
?
спасибо, Себастиан
У меня есть viariable, который содержит что-то вроде этого ab_123456789
Как проверить первые три символа в переменной?
как я могу проверить, если переменная начинается с ab_
?
спасибо, Себастиан
Другой способ с использованием substr
:
if (substr('ab_123456789', 0, 3) === 'ab_')
substr
Здесь используется, чтобы сделать первые 3 байта, начиная с позиции 0 в виде строки, которая затем сравнивается с 'ab_'
. Если вы хотите добавить нечувствительность к регистру, используйте strcasecmp
.
Редактировать Чтобы сделать использование более удобным, вы можете использовать следующую функцию: startsWith
function startsWith($str, $prefix, $case_sensitivity=false) {
if ($case_sensitivity) {
return substr($str, 0, strlen($prefix)) === $prefix;
} else {
return strcasecmp(substr($str, 0, strlen($prefix)), $prefix) === 0;
}
}
Обратите внимание, что эти функции не поддерживают многобайтовые символы, сравниваются только байт. Эквивалентная функция с поддержкой многобайтовой может выглядеть следующим образом:
function mb_startsWith($str, $prefix, $case_sensitivity=false) {
if ($case_sensitivity) {
return mb_substr($str, 0, mb_strlen($prefix)) === $prefix;
} else {
return mb_strtolower(mb_substr($str, 0, mb_strlen($prefix))) === mb_strtolower($prefix);
}
}
Здесь кодировка символов обеих строк предполагается быть internal character encoding.
Использование регулярных выражений
$var = "ab_123456789";
if(preg_match('/^ab_/', $var, $matches)){
/*your code here*/
}
Это довольно просто, так как ваша строка может быть доступна как массив символов. Поэтому вам просто нужно сделать что-то вроде:
if ($var[0] == "a" && $var[1] == "b" && $var[2] == "c")
return true
Вы также можете использовать функцию поиска из библиотеки php.
Строки не являются массивами в PHP. –
@ Daniel Egeberg: Но строки могут быть доступны как массивы. См. Http://php.net/manual/en/language.types.string.php#language.types.string.substr – Gumbo
Это не объект Array, но вы можете получить к нему доступ, как и для массива. –
Самый простой способ - получить подстроку. например substr('ab_123456789', 0, 3);
preg_match вернет 0, если ничего не найдено, или целое число, представляющее количество раз, когда совпадение было найдено. – gehsekky
(bool) 0 === false -> true – cypher