Это будет работать, только если вы обслуживаете страницу как XML (application/xhtml+xml
); нет разделов CDATA в простом HTML. Большинство браузеров в режиме HTML просто игнорируют пример раздела CDATA.
И бросить <![CDATA[
... ]]>
вокруг строки недостаточно, чтобы ее обернуть. Если бы в вашей информации о трассировке была последовательность ]]>
, это закончило бы раздел CDATA, и вы вернулись бы к той же проблеме. Таким образом, вам нужно сделать хотя бы один выход, чтобы справиться с этим делом, и если вы все равно собираетесь выполнять процесс выхода из строя, вы также можете сделать правильный HTML-выход.
Вот почему разделы CDATA в значительной степени бессмысленны. Многие люди думают, что это как-то освобождает их от мысли о том, чтобы избежать проблем, но на самом деле это не так.
В любом случае, экранирование HTML не является неэффективным. Это пара строк заменяет. Любое веб-приложение (*) будет выполнять сотню HTML-переходов на каждой странице. Добавление еще одного - особенно для случая отладки, где эффективность не имеет значения вообще! - это не большое бремя.
(*: хорошо, за исключением плохо написанных приложений из учебников по PHP, авторы которых, очевидно, даже не слышали о htmlspecialchars
.)