регулярное выражение ruby ​​on rails находит и удаляет теги между тегами в HTML-строке - PullRequest
0 голосов
/ 25 декабря 2009

Я работаю в ruby ​​на рельсах и мне нужно следующее:

удалить все теги "br" html между тегами "code" html в строке html. Теги «code» могут встречаться более одного раза.

Так вот, я пытаюсь не скрести экран. У меня есть блог, и я хотел бы разрешить людям использовать HTML-теги кода только в комментариях. Поэтому при форматировании строки я обычно использую simple_format, но я хотел бы, чтобы он игнорировал HTML-теги кода.

Заранее спасибо.

Ответы [ 3 ]

4 голосов
/ 29 декабря 2009

Если у вас абсолютно положительно есть для использования регулярных выражений, попробуйте этот, который ловит все теги <br>, <br/> и <br />:

str.gsub(/<code>.+?<\/code>/) {|s| s.gsub(/<br\s*\/?>/, "")}

Проверено с:

str = "Lorem ipsum dolor sit amet<br />, <code>consectetur adipisicing elit<br />, sed do eiusmod tempor incididunt ut labore<br> et dolore magna aliqua</code>. Ut enim ad minim veniam,<br> quis nostrud exercitation ullamco laboris nisi<br/> ut aliquip ex ea commodo consequat. <code>Duis aute irure dolor in reprehenderit<br /> in voluptate velit esse cillum dolore<br/> eu fugiat nulla pariatur.</code> Excepteur sint occaecat cupidatat non proident,<br /> sunt in culpa qui officia deserunt mollit anim id est laborum."
p str.gsub(/<code>.+?<\/code>/) {|s| s.gsub(/<br\s*\/?>/, "")}

Если вам не нужно использовать регулярные выражения, используйте html-анализатор, такой как nokogiri.

0 голосов
/ 25 декабря 2009

Я второй на Hpricot, но что пытаемся сделать? Пытаетесь сделать что-то вроде веб-скребка или вы анализируете HTML из модели?

0 голосов
/ 25 декабря 2009

Использование Hpricot или анализатора HTML по вашему выбору было бы намного лучше.

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