Кажется, это работает точно так, как вы указали. Он проверяет, что строка начинается с буквенного символа. Ваша строка не должна быть такой, как вы думаете.
Я обернул это в тестовую функцию и выдал несколько строк:
function test($name)
{
echo "${name}: ";
check_name($name);
echo "\n";
}
test(" ZZ1");
test("123");
test("4aa");
test("AAA");
test("Z11");
test("ZZ ");
test("ZZZ");
test("aaa");
test("zzz");
test("Ábc");
Выходной ...
% ./test.php
ZZ1: No match
123: No match
4aa: No match
AAA: Match
Z11: Match
ZZ : Match
ZZZ: Match
aaa: Match
zzz: Match
Ábc: No match
% php --version
PHP 5.3.4 (cli) (built: Dec 15 2010 12:15:07)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
Повторное использование вашей $name
переменной может сбить с толку:
$name = $this->pattern_check($pat, $name);
if($name) {
Попробуйте использовать это вместо:
$matched = $this->pattern_check($pat, $name);
if ($matched) {