tengo algo de código como este, que sustituye algunos códigos cortos con un enlace:¿Hay un preg_replace condicional en PHP?
$search = array(
'#\{r\|([^|]+)\|([^}]+)\}#',
'#\{t\|([^|]+)\|([^}]+)\}#',
...,
);
$replace = array(
'<a href="/ref/$1">$2</a>',
'<a href="/type/$1">$2</a>',
...,
);
$content = preg_replace($search, $replace, $content);
tengo mucho más que son similares así que me preguntaba, ¿hay alguna manera de reducir esto a una sencilla preg_replace
con un condicional ?
Por ejemplo, use la expresión regular #\{([a-z])\|([^|]+)\|([^}]+)\}#
y reemplace la primera coincidencia con algo diferente (r = ref, t = tipo) según su letra? (Si ayuda, los códigos cortos son como {r|url-slug|LinkTitle}
.)