PHP: необходимо регулярное выражение для camelCase пунктирная / подчеркнутая строка и результат теста с родными функциями PHP - PullRequest
0 голосов
/ 23 августа 2010

Я пытаюсь упростить этот метод. Он в основном принимает действие (string), превращает строки с пунктирной линией / подчеркиванием в camelCase и затем проверяет, эквивалентен ли результат нативной функции php, если это так, он получает подчеркивание перед. Я думаю, что все это может быть одним регулярным выражением, но я не уверен, как я проверю function_exists. Любая помощь с благодарностью!

public function getMethod($action){
    if (strpos($action, '-') !== false){
        $action = str_replace(' ', '', ucwords(str_replace('-', ' ', $action)));
        $action = lcfirst($action);
    }

    if (strpos($action, '_') !== false){
        $action = str_replace(' ', '', ucwords(str_replace('_', ' ', $action)));
        $action = lcfirst($action);
    }

    // resolves native function names with underscore
    if (function_exists($action))  return "_".$action;
        else if ($action == 'list')  return '_list';
        else if ($action == 'new')   return '_new';
        else if ($action == '')  return 'index';
        else return $action;
}

1 Ответ

0 голосов
/ 26 августа 2010

После еще нескольких исследований и работ я привел следующее:

public function getMethod($action){
    $pattern = array('/_(.?)/e', '/-(.?)/e', '/ (.?)/e');
    $action = preg_replace($pattern, 'strtoupper("$1")', $action);

    if (function_exists($action) || $action == 'list' || $action == 'new' || $action == 'sort')
        return '_'.$action;
    else if ($action == '')
        return 'index';
    else
        return $action;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...