mysql_real_escape_string
следует использовать только И ВСЕГДА при передаче пользовательских значений в запросы MySQL . Не используйте его ни для чего другого, используйте правильную функцию выхода для правильной задачи.
Здесь я не думаю, что вам вообще нужно использовать функцию escape. Ваше регулярное выражение выглядит хорошо, я уверен, что оно сработает, если вы удалите escape-функцию.
Кроме того, не используйте get_magic_quotes_gpc
, если вы можете избежать этого. Я мог бы объяснить, почему, но я полагаю, факт, что он устарел, так как PHP5.0 является достаточным доказательством. Если ваш хост не позволяет вам отключить его, я бы рассмотрел переход на более опытный хост.