Как преобразовать символы в объекты HTML, используя простой JavaScript - PullRequest
53 голосов
/ 30 августа 2009

У меня есть следующее:

var text = "Übergroße Äpfel mit Würmern";

Я ищу функцию Javascript для преобразования текста таким образом, чтобы каждая специальная буква представлялась своей последовательностью HTML-сущности следующим образом:

var newText = magicFunction(text);
...
newText = "Übergroße Äpfel mit Würmern";

Функция должна не только экранировать буквы этого примера , но и все эти.

Как бы вы этого достигли? Есть ли какая-либо существующая функция там? (Просто, потому что решение без каркаса предпочтительнее)

Кстати: да, я видел этот вопрос , но он не отвечает моим потребностям.

Ответы [ 11 ]

0 голосов
/ 30 августа 2009

Я адаптировал один из ответов на указанный вопрос, но добавил возможность определять явное сопоставление имен персонажей.

var char_names = {
    160:'nbsp',
    161:'iexcl',
    220:'Uuml',
    223:'szlig',
    196:'Auml',
    252:'uuml',
    };

function HTMLEncode(str){
     var aStr = str.split(''),
         i = aStr.length,
         aRet = [];

     while (--i >= 0) {
      var iC = aStr[i].charCodeAt();
       if (iC < 32 || (iC > 32 && iC < 65) || iC > 127 || (iC>90 && iC<97)) {
        if(char_names[iC]!=undefined) {
         aRet.push('&'+char_names[iC]+';');
        }
        else {
         aRet.push('&#'+iC+';');
        }
       } else {
        aRet.push(aStr[i]);
       }
    }
    return aRet.reverse().join('');
   }

var text = "Übergroße Äpfel mit Würmer";

alert(HTMLEncode(text));
...