Может ли регулярное выражение сделать это быстрее?
Я хочу загладить каждое слово и объединить его в одно слово, например:
home = Главная страница about-us = AboutUs
Вот функция, которую я использую в данный момент, может ли регулярное выражение сделать это лучше или эффективнее?
public function formatClassName($name)
{
$name = str_replace('-', ' ', $name);
$name = ucwords($name);
$name = str_replace(' ', '', $name);
return $name;
}
Ответы
Ответ 1
Я не думаю, что регулярное выражение может использовать слова, поэтому вам все равно придется иметь два отдельных регулярных выражения, и я думаю, что с такими простыми случаями регулярные выражения излишние (думаю, охотящиеся белки с артиллерией). Этот код прост, понятен и понятен. НЕ СКАЖИТЕ ЭТО!
Ответ 2
С регулярным выражением вам, вероятно, придется использовать что-то "сложное", например preg_replace_callback
(чтобы иметь возможность применить strtoupper
или ucwords
), что сделает ваш код хотя бы сложнее понять - и, возможно, медленнее, но самое главное, что ваш код легко понять.
Учитывая, что ваше решение работает, просто и легко, я бы, вероятно, сохранил его, если бы был на вашем месте.
Ответ 3
Этот код работает:
$in = Array("home", "about-us");
foreach ($in as $a) {
## this is the line you're looking for
$out = preg_replace('/-?\b(.)/e', "strtoupper('$1')", $a);
echo "$a = $out<br/>";
}
Но я сомневаюсь в этом быстрее, и я согласен с другими комментаторами в том, что это не обязательно лучше. Уменьшение трех строк до одного волосатого регулярного выражения полезно только в том случае, если вы игра в гольф.