Просто добавьте соответствующий якорь (^
):
preg_replace('/^(?:<br\s*\/?>\s*)+/', '', $string);
Это будет соответствовать несколько <br>
s в начале строки.
(?:…)
является не захватывающей группой , поскольку здесь мы используем только круглые скобки для группировки выражения, а не для его захвата. Модификатор не является строго необходимым - (…)
будет работать так же хорошо, но механизм регулярных выражений должен будет выполнять больше работы, потому что тогда ему нужно будет помнить позицию и длину каждого захваченного удара.