[php][regexp] najkrótszy pasujący ciąg znaków

0
$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ś
[???]

0

#[b](.*?)[/b]#i ?

0

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?

0

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).

0

A moze nie zwrociles po prostu uwagi, ze w srodku zostal tez dodany znak zapytania a nie podmienione tylko ograniczniki na hashe ;)

0

Racja - nie zrwocilem uwagi.
Już działa, dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1