Вы, вероятно, пытаетесь решить не ту проблему. (Я знаю, что это не то, что вы хотите услышать.)
Если пользователям разрешено писать незашифрованные >>
и <<
в HTML, то, вероятно, они также смогут писать <>
или <b>
, и в этом случае вы не сможете надежно отличить текст и разметка. (Не берите в голову, что это делает вас уязвимым для атак XSS.)
Вы действительно должны перехватить текст и закодировать его до того, как будет интерполирован в HTML. Вероятно, вы должны объяснить рабочий процесс, приводящий к вашей проблеме. Должен быть лучший способ ее решить.
Редактировать в ответ на комментарий: просто невозможно надежно кодировать ввод, который может быть одновременно текстом или HTML. В любом случае, если пользователи достаточно технически, чтобы вводить необработанный HTML, предположительно, они могут писать сущности - в противном случае не следует вводить необработанный HTML. Если ввод HTML предназначен только для опытных пользователей, то у вас может быть флажок, который указывает, является ли ввод текстовым или HTML. Но вам, вероятно, стоит изучить использование текстового редактора.