Czy ktoś wie, jak przekonwertować znaki specjalne na HTML
in Javascript
?
Przykład:
&
(ampersand) staje się&
."
(podwójny cudzysłów) zmienia się na"
kiedyENT_NOQUOTES
nie jest ustawione.'
(pojedynczy cudzysłów) staje się'
tylko wtedy, gdyENT_QUOTES
jest ustawiony.<
(mniej niż) staje się<
.>
(większe niż) staje się>
.
javascript
Jin Yong
źródło
źródło
Odpowiedzi:
Potrzebujesz funkcji, która robi coś podobnego
Ale biorąc pod uwagę twoje pragnienie innego traktowania pojedynczych / podwójnych cudzysłowów.
źródło
/g
w wyrażeniu regularnym oznacza „globalny”. Mówiąc najprościej, wszystkie wystąpienia ciągu zostaną zastąpione. Bez/g
tylko pierwszego meczu zostałby zastąpiony.Moim zdaniem najlepszym sposobem jest użycie wbudowanej funkcji ucieczki HTML przeglądarki do obsługi wielu przypadków. Aby to zrobić, po prostu utwórz element w drzewie DOM i ustaw
innerText
element na swój łańcuch. Następnie pobierzinnerHTML
element. Przeglądarka zwróci ciąg zakodowany w formacie HTML.Testowe uruchomienie:
Wynik:
Ta metoda ucieczki z HTML jest również używana przez bibliotekę Prototype JS, choć inaczej niż w uproszczonym przykładzie, który podałem.
Uwaga: nadal będziesz musiał samodzielnie zmieniać cudzysłowy (podwójne i pojedyncze). Możesz użyć dowolnej metody przedstawionej tutaj przez innych.
źródło
delete el
jest to błąd. perfectionkills.com/understanding-delete<>&
Działa to dobrze, ale nie jest tak obszerne, jak rozwiązania Neotropic lub KooiInc.output = $('<div>').text(input).html()
Ta funkcja ogólna koduje każdy znak niealfabetyczny do jego kodu HTML (numeryczny):
źródło
<>&
var iC = str.charCodeAt(i)
Z Mozilli ...
Najlepszym rozwiązaniem
Przykład użycia:
źródło
Utwórz funkcję, która używa ciągu
replace
źródło
Dla tych, którzy chcą zdekodować kod znaku będący liczbą całkowitą, jak
&#xxx;
wewnątrz ciągu, użyj tej funkcji:ES6
źródło
źródło
Jak wspomniano,
dragon
najczystszym sposobem na to jestjQuery
:źródło
Wynik:
W tagu obszaru testowego:
Jeśli zmienisz trochę znaków w długim kodzie ...
źródło
W
PRE
tagu - iw większości innych tagów HTML - zwykły tekst dla pliku wsadowego, który używa wyjściowych znaków przekierowania (<i>), zepsuje HTML, ale oto moja wskazówka : wszystko idzie wTEXTAREA
elemencie - nie zepsuje HTML, głównie dlatego, że znajdujemy się wewnątrz elementu sterującego umieszczonego w instancji i obsługiwanego przez system operacyjny, a zatem jego zawartość nie jest analizowana przez silnik HTML.Na przykład załóżmy, że chcę podświetlić składnię mojego pliku wsadowego za pomocą javascript. Po prostu wklejam kod w obszar tekstowy, nie martwiąc się o znaki zastrzeżone HTML, i każę skryptowi przetwarzać
innerHTML
właściwość obszaru tekstowego, który ocenia tekst z zastrzeżonymi znakami HTML zastępowanymi przez odpowiadające im encje ISO-8859-1.Przeglądarki automatycznie zmieniają znaczenie znaków specjalnych podczas pobierania właściwości
innerHTML
(iouterHTML
) elementu. Korzystanie z obszaru tekstowego (a kto wie, może wpisywania tekstu) po prostu oszczędza wykonanie konwersji (ręcznie lub za pomocą kodu).Używam tej sztuczki do testowania mojego wyróżniacza składni, a kiedy kończę tworzenie i testowanie, po prostu ukrywam obszar tekstu.
źródło
Jeśli potrzebujesz wsparcia dla wszystkich standardowych nazwanych odniesień do znaków , Unicode i niejednoznacznych ampersandów , biblioteka he jest jedynym w 100% niezawodnym rozwiązaniem, jakie znam!
Przykładowe zastosowanie
źródło
obejście:
źródło
Kolejny, którego teraz używamy, działa. Jeden powyżej, zamiast tego wywołuje skrypt i zwraca przekonwertowany kod. Dobry tylko na małych obszarach tekstowych (co oznacza, że nie jest pełny w artykule / blogu itp.)
Powyżej. Działa na większości znaków.
Tworzę plik javascript, który ma wiele funkcji, w tym powyższe. http://www.neotropicsolutions.com/JSChars.zip
Zawiera wszystkie potrzebne pliki. Dodałem jQuery 1.4.4. Po prostu dlatego, że widziałem problemy w innych wersjach, ale jeszcze ich nie wypróbowałem.
źródło
możesz po prostu przekonwertować znaki specjalne na html używając powyższego kodu.
źródło
Oto dobra biblioteka, którą uważam za bardzo przydatną w tym kontekście.
https://github.com/mathiasbynens/he
Według jego autora:
źródło
Oto kilka metod, których używam bez Jquery:
Możesz zakodować każdy znak w swoim ciągu:
Lub po prostu kieruj reklamy na główne znaki bezpiecznego kodowania, o które należy się martwić (&, inebreaks, <,>, "i '), na przykład:
źródło
źródło
To nie jest bezpośrednią odpowiedzią na twoje pytanie, ale jeśli używasz
innerHTML
do pisania tekstu w elemencie i napotkałeś problemy z kodowaniem, po prostu użyjtextContent
:źródło
Do
DOMParser
konwersji znaków specjalnych możemy użyć javascript .źródło
Poniżej znajduje się prosta funkcja do kodowania znaków ucieczki XML w JS
Encoder.htmlEncode (unsafeText);
źródło
Możesz to naprawić, zastępując funkcję .text () na .html (). to działa dla mnie.
źródło
użyj tego do przetestowania: http://www.w3schools.com/js/tryit.asp?filename=tryjs_text
źródło
Tak, ale jeśli chcesz gdzieś wstawić wynikowy ciąg bez jego konwersji z powrotem, musisz to zrobić:
źródło
Zobacz JavaScript htmlentities http://phpjs.org/functions/htmlentities:425
źródło
Użyj funkcji escape () javaScript , która umożliwia kodowanie ciągów.
na przykład,
źródło
źródło