正则表达式可以更快地完成吗?

时间:2010-02-03 17:15:54

标签: php regex

我想将每个单词大写并将其组合成一个单词,例如:

  

home =主页
  about-us =关于我们

这是我目前使用的功能,正则表达式可以做得更好还是更有效?

public function formatClassName($name)
{
 $name = str_replace('-', ' ', $name);
 $name = ucwords($name);
 $name = str_replace(' ', '', $name);
 return $name;
}

3 个答案:

答案 0 :(得分:29)

我不认为正则表达式可以将这些单词大写,所以你仍然必须有两个单独的正则表达式,我认为在这些简单的情况下,正则表达式是过度的(想想用火炮狩猎松鼠)。此代码简单,清晰且易于理解。请勿触摸它!

答案 1 :(得分:12)

使用正则表达式,您可能必须使用“复杂”的内容,例如preg_replace_callback (以便能够应用strtoupperucwords函数),这将使您的代码至少更难理解 - 并且可能更慢,但最重要的是您的代码易于理解。

考虑到您的解决方案正常并且简单易行,如果我在您的位置,我可能会保留它。

答案 2 :(得分:4)

此代码有效:

$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/>";
}

但我怀疑它的速度更快,我同意其他评论者认为它不一定更好。如果你是golfing,只需将三行减少到一个毛状正则表达式。