preg_replace_callback("#(.)?((https?|ftp)://[^,:'\"<>\n\r ]+)(?!<\/a>)(['\"<>\n\r ])?#i", function($matches) {
// первая группа есть и содержит запрещенный символ
if ($matches[1] && in_array($matches[1], ["'", '"', "="]))
return $matches[0];
// подставляем, возвращаем
return '<a href...';
}, $text)
'\\1<a href="\\2" target="_blank">\\2</a>\\4'
а вызов коллбека и проверять значение первой группы, если все ок, проводить замену на ссылку, если в первой группе символ из числа запрещенных собстно не трогать
К тому же когда мы пишем что-либо, мы рассчитываем на то, что это что-то может работать с разными бд, mysql, mssql..etc и завязывать код на mysql memory неудобно. По этому как-бы можно использовать Memcached или Mysql Memory, но выгоднее и удобнее поднять redis и не париться.