1
我需要在阵列某种模式来替换字符串,如果需要的模式存在:仅使用preg_replace()或组合preg_match()和preg_replace()?
$patterns = [
'PATTERN#1' => 'REPLACE#1',
'PATTERN#2' => 'REPLACE#2',
];
$string = 'SOME STRING TO PREG_REPLACE';
哪种方式会更快:
// PREG_REPLACE ONLY FOR MATCHED PATTERN:
foreach ($patterns as $pattern => $replace) {
if (preg_match($string, $pattern)) {
preg_replace($pattern, $replace, $string);
break;
}
}
或
// PREG_REPLACE FOR ALL PATTERNS:
foreach ($patterns as $pattern => $replace) {
preg_replace($pattern, $replace, $string);
break;
}
只有'replace'会更快 - 它不需要匹配两次。你测试过了吗?更简单的解决方案太慢了吗? – Bergi 2013-03-31 15:04:45
为什么你会打破第一个模式后的循环? – Bergi 2013-03-31 15:05:57