php / regex: ¿Cómo reemplazar parte de un patrón encontrado, pero dejando el resto como está?
¿Cómo puedo reemplazar una subcadena en un patrón encontrado, pero dejando el resto como está?
(EDITAR: el caso real es, por supuesto, más complicado que el siguiente ejemplo, tengo que hacer coincidir las apariciones dentro de las etiquetas xml. ¡Es por eso que tengo que usar expresiones regulares!)
Digamos que quiero cambiar las apariciones de la letra "X" dentro de una palabra a la letra "Z".
quiero
aaXaa aaX Xaa
convertirse
aaZaa aaZ Zaa
Encontrar ocurrencias de palabras como "x" no es un problema, como este:
[^ X \ s]X [^ \ s]
pero un preg_match normal reemplaza la coincidencia completa, donde quiero que todo en el patrón, excepto "X", permanezca como está.
¿Cuál es la mejor manera de lograr esto en PHP?