Robię tak i nie działa
$string = preg_replace('#('.htmlspecialchars('<?php').')#i', htmlspecialchars_decode('<span style="color:red;">').htmlspecialchars('!\\1').htmlspecialchars_decode('</span>'), $string);
A to działa i chodzi mi o ten sam efekt
$string = str_replace(htmlspecialchars('<?php'), htmlspecialchars_decode('<span style="color:red;">').htmlspecialchars('!<?php').htmlspecialchars_decode('</span>'), $string);
W pierwszym przykładzie błąd leży w zapisie- składni, a muszę użyć preg_replace bo tam sobie mogę uwzglądnić wielkość liter 'i' i nie muszę robić tego samego 2 razy w str_replace.
Robiłem to już na wszystkie sposoby jakie mi przychodzą do głowy i nic.