2010-07-19 5 views

ответ

20

Другой способ с использованием 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.

6

Использование регулярных выражений

$var = "ab_123456789"; 
if(preg_match('/^ab_/', $var, $matches)){ 
    /*your code here*/ 
} 
+0

preg_match вернет 0, если ничего не найдено, или целое число, представляющее количество раз, когда совпадение было найдено. – gehsekky

+0

(bool) 0 === false -> true – cypher

6

Вы можете использовать strpos():

$text = "ab_123456789"; 
if(strpos($text, "ab_") === 0) 
{ 
    // Passed the test 
} 
+3

Обратите внимание, что 'strpos' будет искать до тех пор, пока не будет найдено совпадение или не будет достигнут конец строки. – Gumbo

+0

Хмм, хорошая точка –

1

Это довольно просто, так как ваша строка может быть доступна как массив символов. Поэтому вам просто нужно сделать что-то вроде:

if ($var[0] == "a" && $var[1] == "b" && $var[2] == "c") 
    return true 

Вы также можете использовать функцию поиска из библиотеки php.

+2

Строки не являются массивами в PHP. –

+0

@ Daniel Egeberg: Но строки могут быть доступны как массивы. См. Http://php.net/manual/en/language.types.string.php#language.types.string.substr – Gumbo

+0

Это не объект Array, но вы можете получить к нему доступ, как и для массива. –

1

Самый простой способ - получить подстроку. например substr('ab_123456789', 0, 3);

Смежные вопросы