Я использую переменные FS
и OFS
для управления файлами зоны BIND, которые ограничены табуляцией. Вот один из моих сценариев https://gist.github.com/RichardBronosky/abe1652c2d5c78c35b92ad02bdf0d0af#file-dns_update-sh-L36-L39
Мясо:
awk -v FS='\t' -v OFS='\t' \
-v record_type=$record_type \
-v hostname=$hostname \
-v ip_address=$ip_address '
$1==hostname && $3==record_type {$4=ip_address}
{print}
' $zone_file > $temp
Это простой и понятный способ сделать это.
РЕДАКТИРОВАТЬ: Этот ответ был опубликован давно, а функция htmlDecode
представила XSS-уязвимость. Было изменено изменение временного элемента с div
на textarea
, что снизило вероятность XSS. Но в настоящее время я бы посоветовал вам использовать DOMParser API, как это предлагается в другом ответе .
Я использую эти функции:
function htmlEncode(value){
// Create a in-memory element, set its inner text (which is automatically encoded)
// Then grab the encoded contents back out. The element never exists on the DOM.
return $('<textarea/>').text(value).html();
}
function htmlDecode(value){
return $('<textarea/>').html(value).text();
}
В основном элемент div создается в памяти, но никогда не добавляется к документ.
В функции htmlEncode
я установил innerText
элемента и получил закодированный innerHTML
; в функции htmlDecode
я устанавливаю значение innerHTML
элемента, и извлекается innerText
.
Насколько мне известно, в javascript нет прямого метода кодирования / декодирования HTML.
Однако вы можете использовать JS для создания произвольного элемента, установите его внутренний текст, затем прочтите его с помощью innerHTML.
Допустим, с jQuery это должно работать:
var helper = $('chalk & cheese').hide().appendTo('body');
var htmled = helper.html();
helper.remove();
Или что-то в этом роде.
Прототип имеет встроенный класс String . Поэтому, если вы используете / планируете использовать Prototype, он будет делать что-то вроде:
'<div class="article">This is an article</div>'.escapeHTML();
// -> "<div class="article">This is an article</div>"
FWIW, кодировка не теряется. Кодировка используется парсером разметки (браузером) при загрузке страницы. После считывания и анализа источника и загрузки DOM-файла в память браузером, кодировка разбирается на то, что она представляет собой. Таким образом, к моменту выполнения JS, чтобы прочитать что-нибудь в памяти, символ, который он получает, является той кодировкой, которую он представляет.
Может быть, я здесь и оперирую строго по семантике, но я хотел, чтобы вы поняли назначение кодирования. Слово "lost" звучит так, как будто что-то не работает так, как должно бы работать.