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