Преобразование кода C ++ в безопасный HTML - PullRequest
1 голос
/ 19 сентября 2008

Я решил попробовать http://www.screwturn.eu/ wiki в качестве утилиты хранения фрагмента кода. Пока что я очень впечатлен, но что меня раздражает, так это то, что когда я копирую и вставляю свой код, который я хочу сохранить, '<' s и '[' (<a href="http://en.wikipedia.org/wiki/Character_encodings_in_HTML#Character_references" rel="nofollow noreferrer">http://en.wikipedia.org/wiki/Character_encodings_in_HTML#Character_references)) неизменно запутывают вывод, поскольку вики их интерпретируют как теги вики или HTML.

Кто-нибудь знает способ обойти это? Или, если не получится, знаете простую утилиту, которая будет брать код C ++ и преобразовывать его в безопасный HTML-код?

Ответы [ 7 ]

2 голосов
/ 19 сентября 2008

Вы можете использовать тег @@ ... @@ , чтобы выйти из кода и автоматически обернуть его в теги PRE .

1 голос
/ 19 сентября 2008

Окружите свой код тегами .. .

0 голосов
/ 20 сентября 2008

Чтобы разместить код C ++ на веб-странице, вы должны сначала преобразовать его в действительный HTML, что обычно требует использования символов HTML , как отмечали другие. Это не ограничивается заменой < и > на &lt; и &gt;. Рассмотрим следующий код:

unsigned int maskedValue = value&mask;

О-о, HTML DTD содержит сущность с именем &mask;? Лучше заменить & на &amp;.

Двигаясь в альтернативном направлении, вы можете избавиться от [ и ], заменив их на триграфы ??( и ??). В C ++ триграфы и орграфы представляют собой последовательности символов, которые можно использовать для представления определенных символов, которые доступны не во всех наборах символов. Они вряд ли будут признаны большинством программистов на C ++.

0 голосов
/ 19 сентября 2008

Список символов, которые необходимо экранировать:

  • <(знак минус) </li>
  • & (амперсанд)
  • [(открывающая квадратная скобка)
0 голосов
/ 19 сентября 2008

Дарио Солера писал: «Вы можете использовать тег @@ ... @@, чтобы выйти из кода и автоматически обернуть его в теги PRE.»

Если вы не хотите, чтобы он был упакован, просто используйте: <esc></esc>

0 голосов
/ 19 сентября 2008

Вы пробовали оборачивать свой код в html pre или теги кода перед вставкой? Оба позволяют использовать любые специальные символы (такие как «<»), не интерпретируя их как html. pre также соблюдает форматирование содержимого. </p>

пример

<code><pre>
    if (foo <= bar) {
        do_something();
    }
0 голосов
/ 19 сентября 2008

Я не знаю утилит, но уверен, что вы могли бы написать очень простое приложение, которое выполняет поиск / замену Чтобы отобразить угловые скобки, вам просто нужно заменить их на &gt; и &lt; соответственно. Что касается квадратных скобок, то это особая проблема вики с метками уценки.

...