Есть ли лучший способ ускорения и ускорения HTML, чем CGI для Ruby?
CGI.escapeHTML
довольно плохо, но CGI.unescapeHTML
полностью оборван. Например:
require 'cgi'
CGI.unescapeHTML('…')
# => "…" # correct - an ellipsis
CGI.unescapeHTML('…')
# => "…" # should be "…"
CGI.unescapeHTML('¢')
# => "\242" # correct - a cent
CGI.unescapeHTML('¢')
# => "¢" # should be "\242"
CGI.escapeHTML("…")
# => "…" # should be "…"
Похоже, что unescapeHTML
знает обо всех числовых кодах плюс &
, <
, >
и "
. И escapeHTML
знает только о последних четырех - он не выполняет никаких числовых кодов. Я понимаю, что экранирование обычно не должно быть таким же надежным, поскольку HTML позволит буквальные версии большинства символов, кроме четырех, о которых знает CGI.escapeHTML
. Но unescaping должно быть действительно лучше.
Есть ли лучший инструмент там, по крайней мере для unescaping?
Ответы
Ответ 1
Жесткий камень htmlentities должен сделать трюк:
require 'rubygems'
require 'htmlentities'
coder = HTMLEntities.new
coder.decode('…') # => "…"
coder.decode('…') # => "…"
coder.decode('¢') # => "¢"
coder.decode('¢') # => "¢"
coder.encode("…", :named) # => "…"
coder.encode("…", :decimal) # => "…"
Ответ 2
require 'rubygems'
require 'hpricot'
Hpricot('…', :xhtml_strict => true).to_plain_text
Хотя вам может понадобиться кодировка символов.