Primero, su uso de \=submatch(0)
es demasiado complejo, solo use \ 0. Y tenga en cuenta que la coincidencia secundaria 0 siempre es el patrón totalmente coincidente, por lo que su patrón de reemplazo tiene cierta redundancia. En segundo lugar, el .
átomo solo coincide con un personaje. Y finalmente, necesitas escapar del []
's y el $
. Intenta esto en su lugar:
:%s/\$_POST\['.\{-}'\]/mysql_escape_string(\0)/gc
El uso de \{-}
medios para hacer coincidir cualquier número del átomo anterior, de una manera no codiciosa (en oposición a *
).
También noto que sus ejemplos son inconsistentes entre sí. ¿Es " $POST_[...]
", " $_POST[...]
" o simplemente " $POST[...]
"?
Es posible que desee echar un vistazo a un libro como Mastering Regular Expressions .