Ruby заменяет HTML-сущность на шестнадцатеричный эквивалент - PullRequest
1 голос
/ 16 января 2012

Есть ли способ использовать gsub (или что-то еще) в Ruby для замены строки ее шестнадцатеричным эквивалентом? В Mysql вы бы сделали что-то вроде этого:

    self.connection.execute("UPDATE `dvd_actor` SET actor = replace(actor, '&pound,', CHAR(163));")

Я переписываю это в Rails и использую gsub, что-то вроде этого:

self.actor = actor.gsub(/£/, "£").strip if actor =~ /£/

Но у меня уже есть все строки, написанные шестнадцатеричным символом, и я стараюсь не выяснять, какой символ какой (некоторые из них требуют копирования / вставки, потому что у меня их нет на английской клавиатуре).

Я попробовал это (что я видел в посте здесь):

actor.gsub(/"/) { "0x134".hex  } if actor =~ /"/

Но это не делает трюк, оно производит число.

Или еще лучше, может быть, есть камень, который уже делает это? В основном взять значения HTML и исправить их? О, это было бы хорошо.

Ответы [ 2 ]

0 голосов
/ 17 января 2012

Мне кажется, я нашел это: камень под названием htmlentities должен делать именно то, что я хочу. Итак, у меня есть это:

ampersands = where("actor LIKE ?", "%&%;%")
ampersands.each do |actor|
  fixed_actor = fixer.decode(actor.actor) 
  self.update(actor.id, :actor => fixed_actor)
0 голосов
/ 16 января 2012

Я бы попробовал "0x134".hex.to_s(16). Он преобразует «0x134» в «134».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...