Wstyd się przyznać, że znów męczę Was o te wyrażenia regularne

Żeby nie zabierać Wam cennego czasu, przejdę od razu do rzeczy.
Chcę osiągnąć taki efekt:
Łańcuch typu
Kod
[url=jakis_string]jakis_opis[/url]
zamienić na - Adres typu:
jeżeli jakis_string zawiera przedrostek http|https|ftp|www(przy www trzeba by dodać http:// przed stringiem) - Adres typu:
jeżeli jakis_string nie zawiera przedrosteku http|https|ftp|www
Kod
[url=jakis_string]jakis_opis[/url]
:
<?php preg_replace("#+?://){1}([a-z0-9-.,?!%*_#:;~&$@/=+()]+)](.*?)#si", "<a class="focus" href="12" target="_blank">3</a>", ... ?>