preg_replace_callback() だけでいい

function lnk($matches) {
    $url = './index.php?' . http_build_query(array('word' => $matches[1]), '', '&');
    return sprintf('<a href="%s">ひろゆき</a>', htmlspecialchars($url, ENT_QUOTES));
}

$val = "あの<a>2ちゃんねる</a>がモバイルに";
echo preg_replace_callback('#<a>(.+?)</a>#s', 'lnk', $val);