В общем у меня есть маркер типа {block}123{/block} И эта функция бы всё нормально делала,если бы находила его))) Код (PHP): public function set_block($name,$value){ preg_match_all("/{$name}([^{}]+){/$name}/i",$this->content,$b); var_dump($b); if(count($b[0]) > 0){ for($i=0;$i < count($b[0]);$i++){ $this->content = str_replace("{".$name."}","",$this->content); $this->content = str_replace("{\/$name}","",$this->content); if(empty($value)){ $this->content = str_replace($b[1][$i],"",$this->content); }else{ } } } return $this->content; }
Хорошо, Сначало он получает имя блока и значение Дальше он находит по регулярке это в нужном контенте Если он нашёл больше 0 "блоков" он в цикле заменяет им "маркеры с полученным именем" на пустоту Если полученное значение пустое,тогда и содержимое между "маркерами" он заменяет на пустоту И возвращает Здесь он не может найти по регулярке нужный блок Добавлено спустя 5 минут 27 секунд: Мне нужно только составить регулярку для {block} content {/block} Добавлено спустя 16 минут 31 секунду: Это исправил,но теперь $b[1][$i] выходит }123,он от куда-то это скобку берёт.