Fino ad oggi ho adoperato ereg o eregi_replace per sostituzioni di questo tipo

$pub= ereg_replace('!b!', '', $pub);

$pub= ereg_replace('!eb!', '
', $pub);
Ora però vorrei usare preg_replce dato che le altre due istruzioni sono "decprecate" e verranno dismesse in php6

Se scrivo

$pub= preg_replace('!b!', '[b]', $pub);
mi scompaiono tutte le lettere b trasformate in [b] mentre dovrebbe accadere solo dalle lettere precedute e seguite da ! ovvero dalle !b!

Devo inserire qualche escape?