mam taki kod:
[php:1:3936cfb2d1]<?php
function code($tekst)
{
$tekst=nl2br($tekst);
$tekst=preg_replace_callback("!([kod])(<br />rn*)(.+)[/kod]!Us", "znacznik_kod", $tekst);
$tekst=preg_replace_callback("!(
  1. <?php
  2. )(.+)
  3. ?>
!Us", "znacznik_php", $tekst);
$tekst=preg_replace_callback('!]*)](.*)!Us','znacznik_url', $tekst);
$tekst=preg_replace_callback('!(.*)!Us','znacznik_url', $tekst);
$tekst=preg_replace_callback('![img=([^]]*)]!Us','znacznik_img', $tekst);
$tekst=znacznik_cytuj($tekst);
$tekst=style($tekst);
$tekst=emotikony($tekst);
return $tekst;
}
?>[/php:1:3936cfb2d1]

Wszystko działa ok jeśli w stringu $tekst jest maksymalnie tylko jeden znacznik otwierający i zamykający każdego typu.

Jeśli zrobie np 2 razy
Kod
[kod]123[/kod]snfhsgdkfjs[kod]345[/kod]

to już się wykrzacza i zamienia tylko pierwsze wystąpienie ciągu