Вы можете использовать substr()
в сочетании с strpos()
вместо Regex.
$matches = array();
$f = strpos($str, '[url=');
while ($f)
{
$end = strpos($str, ']', $f);
$f += 5;
$matches[] = substr($str, $f, $end - $f);
$f = strpos($str, '[url=', $end);
}
var_dump($matches);
// Regex Solution
preg_match_all('/\[url=(.+?)\]/i', $str, $matches);
var_dump($matches[1]);