У меня есть такой код, который заменяет некоторые шорткоды ссылкой:
$search = array(
'#\{r\|([^|]+)\|([^}]+)\}#',
'#\{t\|([^|]+)\|([^}]+)\}#',
...,
);
$replace = array(
'<a href="/ref/$1">$2</a>',
'<a href="/type/$1">$2</a>',
...,
);
$content = preg_replace( $search, $replace, $content );
У меня есть еще много похожих, поэтому мне интересно, есть ли способ уменьшить это к одному простому preg_replace
с условным выражением?
Например, используйте регулярное выражение #\{([az])\|([^|]+)\|([^} ]+)\}#
и заменить первое совпадение чем-то другим (r=ref, t=type) на основе его буквы? (Если это поможет, шорткоды вроде {r|url-slug| LinkTitle}
.)