preg_replace is a Perl compatable regexp: http://us2.php.net/manual/en/ref.pcre.php
Next, the \ are needed before the [ and ] because in PCRE, those are used to indicate a character set, and we want to use them as their literal values.
(.*?) means to match any character, but to be ungreedy (ie. stop when it finds the next bit we are searching for), and the \1 is the same as $1 in that it just references what was found in our subpatteren -- the url, in that case.
The / at the beginning (and end) of the regexp is the delimiter for the regexp.
Also, seby, I'm not sure why you think your modification is better... I can somewhat see the case insensativity, but why the inclusion of new lines with the dot metacharacter (the s)?