Символы ?=&
предназначены для URL со строками запроса. Обратите внимание, что я изменил разделитель с /
на !
, потому что в вашем выражении много косых черт. Также обратите внимание, что вам не нужно A-Z
, если вы находитесь в режиме без учета регистра.
return preg_replace('!(http://[a-z0-9_./?=&-]+)!i', '<a href="$1">$1</a> ', $text." ");