если значение p (т.е. XXXXX) цифры, то
PHP код:
$result = preg_replace('/p=(\d*?)/i', 'http://address/forums/showthread.php?t=\\1', $subject);
В противном случае нужно определить ограничивающий символ для последовательности XXXXX. Например, если спользовать символ '&', тогда
PHP код:
$result = preg_replace('/p=(.*?)&/i', 'http://address/forums/showthread.php?t=\\1', $subject);