php中的多个正则表达式替换

时间:2011-11-23 16:48:37

标签: php regex

我需要对字符串执行多次替换:删除非字母数字字符,删除重复的空格,并将单个单词的首字母大写。为所有3个任务创建单个正则表达式表达式是一个好习惯,或者如果我在3个单独的preg_replace命令中将其拆分,性能是否会受到影响?

3 个答案:

答案 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);

Demo

答案 2 :(得分:0)

通常较少的操作更好,但我认为你需要处理数百万字符串才能产生明显的差异