Подкиньте ссылку где объясняют принцип preg_replace и preg_match, а то я не понимаю всех тих (.*?), ([0-9]) и тд
А не совсем всё понял, но как сделать чтобы preg_replace заменял <?if(текст)?> на "; if(тот же текст){ echo " Я попробовал код preg_replace("<\?if\((.*?)\)\?>","\"; if(\\1){ echo \"",$text); Но иногда сервер заменяет <?if($USER=4)?>условие 1<?endif?> <?if($USER=1)?>условие 2<?endif?> на "; if($USER=4)?>условие 1<?endif?> <?if($USER=1){ echo "условие 2<?endif?> т.е. хватает первый "<?if(" пропускает первый ")?>" и идет до второго ")?>"
Как сделать в preg_replace так чтобы был не любой текст, а любой кроме знака вопроса (?) заменить <?тут любой текст и символы кроме знака вопроса?> preg_replace("<\?(.*?)\?>","заменил)",$text); только вместо (.*?) что написать ?
Любой символ кроме знака вопроса выглядит примерно так: [^?] Все подробности про регулярки с примерами тут.
Это происходит где? Ты где ищешь "<? ?>" ? (.*?) с на---> (.+?) попробуй: preg_replace('#<?(.+?)?>#ies','(замена)',$text);