Подтвердить что ты не робот

Есть ли лучший способ ускорения и ускорения 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?

4b9b3361

Ответ 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

Хотя вам может понадобиться кодировка символов.