我需要对字符串执行多次替换:删除非字母数字字符,删除重复的空格,并将单个单词的首字母大写。为所有3个任务创建单个正则表达式表达式是一个好习惯,或者如果我在3个单独的preg_replace命令中将其拆分,性能是否会受到影响?
答案 0 :(得分:3)
通常,使代码更易于维护但效率稍低是可取的。在这里你可以选择一个令人痛苦的调试的怪异正则表达式,或者3个非常简单的正则表达式,我会每次都选择后者。除非您正在解析数百万个字符串,否则您可能甚至不会注意到性能差异。
如果您想要一些好的阅读,那么在正常工作之前尽可能提高效率的动力称为Premature Optimization。
答案 1 :(得分:2)
前两个使用两个正则表达式,然后使用ucwords。前两个操作不适合组合,它们根本不同(一个替换为空,一个替换为匹配的单个字符)。然后,使用ucwords
以避免使用其他正则表达式。
$result = preg_replace('/[^a-z\s]/i', '', $subject);
$result = preg_replace('/(\s)\s+/i', '$1', $result);
$result = ucwords( $result);
答案 2 :(得分:0)
通常较少的操作更好,但我认为你需要处理数百万字符串才能产生明显的差异