strtoupper почему то возвращает false

Gremboloid

инженера Гр...
Пытаясь выяснить почему у меня не работает pear.apigen.org/ApiGen
наткнулся на такую ситуацию в /PEAR/ApiGen/Config.php

PHP:
$option = 'access-levels';
$converted = preg_replace_callback('~-([a-z])~', function($matches) {
            var_dump($matches, strtoupper($matches[1]));
            return strtoupper($matches[1]);
        }, $option);
var_dump($converted);
выводит
array(2) {
[0] =>
string(2) "-l"
[1] =>
string(1) "l"
}
bool(false)
string(11) "accessevels"
Сам кусок кода с strtoupper в PHP работает корректно, в PEAR strtoupper возвращает false.
Никак не могу понять с чем это может быть связано.
 

AmdY

Пью пиво
Команда форума
php 5.3.5
PHP:
array
  0 => string '-l' (length=2)
  1 => string 'l' (length=1)
string 'L' (length=1)
string 'accessLevels' (length=12)
 

Sender

Новичок
У меня тоже выводит как надо. php 5.3.6.

strtoupper сомнительно чтобы выводил false, у него нету такого return value.

Локализуй проблему. Упрости отладочный код, выведи более детально переменные которые в функции передаешь, добавь __FILE__.'@'.__LINE__ к выводимым значениям чтобы точно знать что ты там копаешь.
 

Gremboloid

инженера Гр...
Если вы просто код в PHP запускаете, то это бесполезно. В PHP он работает корректно.
Я говорю про пакет PEAR.

Еще точнее пытаюсь выяснить почему не работает ApiGen в Netbeans 7.2
 

Gremboloid

инженера Гр...
Продолжаю ковырять. Проблема в локале ОС windows 7
PHP:
setlocale(LC_ALL, 0)
выдает
LC_COLLATE=C;LC_CTYPE=Russian_Russia.1251;LC_MONETARY=C;LC_NUMERIC=C;LC_TIME=C
Нужна локаль типа ru_RU.utf8, но в винде ее нет.
Нашел рекомендацию использовать локаль Russian_Russia.65001,
Иду Пуск->Панель управления->Язык и региональные стандарты->Дополнительно
А там нет настроек "Кодовые страницы таблиц преобразования". В семерке убрали такие настройки.
 

Gremboloid

инженера Гр...
Прошу уточнить, на что я должен обратить внимание в точке останова на строке?
 

Gremboloid

инженера Гр...
В первом посте показан аргумент и значение. Или я вас не пониманию.
PHP:
array(2) {
   [0] => string(2) "-l"
   [1] => string(1) "l"
}
bool(false)
string(11) "accessevels"
 
Сверху