$cos = preg_replace("/\[b](.*)\[\/b]/i", "<strong>$1</strong>", $cos);
dla:[b]coś[/b] drugie coś [b]trzecie coś[/b]
daje coś[/b] drugie coś [b]trzecie coś
a ja chcę, żeby było coś drugie coś trzecie coś
[???]
$cos = preg_replace("/\[b](.*)\[\/b]/i", "<strong>$1</strong>", $cos);
dla:[b]coś[/b] drugie coś [b]trzecie coś[/b]
daje coś[/b] drugie coś [b]trzecie coś
a ja chcę, żeby było coś drugie coś trzecie coś
[???]
#[b](.*?)[/b]#i ?
niestety nadal łapie najdłuższy możliwy ciąg znaków :/
prz okazji jaka jest różnica pomiędzy wyrażeniem objętym haszami a objętym slashami?
Taka, że trzeba eskejpować # zamiast /.
Generalnie ? powinien spowodować, że dopasuje jak najmniej znaków. Musisz mieć coś nie tak, może dopisujesz modyfikator zmieniający zachowanie ? (zamiast lazy powoduje greedy).
A moze nie zwrociles po prostu uwagi, ze w srodku zostal tez dodany znak zapytania a nie podmienione tylko ograniczniki na hashe ;)
Racja - nie zrwocilem uwagi.
Już działa, dzięki