Ich habe diesen HTML Inhalt zu entfernen > unabhängig von seiner Position zwischen <li> & </li >. Ähnlich muss ich p Tags zwischen td Tags innerhalb einer Tabelle entfernen.Regex zu p-Tags innerhalb von li-Tags und td-Tags
Dies ist mein Controller-Code so weit:
nogo={"<li>\n<p>" =>'<li>', "</p>\n</li>" => '</li>', "<td>\n<p>" => '<td>', "</p>\n</td>" => '</td>',
'<p> </p>' => '','<ul>' => "\n<ul>",'</ul>' => "</ul>\n", '</ol>' => "</ol>\n" ,
'<table>' => "\n<table width='100%' border='0' cellspacing='0' cellpadding='0' class='table table-curved'>",
'<' => '<', '>'=>'>','<br>' => '','<p></p>' => '', ' rel="nofollow"' => ''
c=params[:content]
bundle_out=Sanitize.fragment(c,Sanitize::Config.merge(Sanitize::Config::BASIC,
:elements=> Sanitize::Config::BASIC[:elements]+['table', 'tbody', 'tr', 'td', 'h1', 'h2', 'h3'],
:attributes=>{'a' => ['href']}))#.split(" ").join(" ")
re = Regexp.new(nogo.keys.map { |x| Regexp.escape(x) }.join('|'))
@bundle_out=bundle_out.gsub(re, nogo)
im den obigen HTML-Inhalt zu diesem Code durch params passing [: Gehalt], die zu einem Variablen c zugeordnet ive.
Folgendes ist das o/p, das nicht wie erwartet ist. Einige schließen p-Tags und offene p-Tags sind immer noch zwischen li und schließen li-Tags
<p>This is a paragraph:</p>
<ul>
<li>point 1</li>
<li>point 2</p>
<ul>
<li>point 3</li>
<li>point 4</li>
</ul>
</li>
<li>point 5</li>
</ul>
<ul>
<li><strong>sub-head : </strong>This is a para followed by heading, This is a para followed by heading, This is a para followed by heading, This is a para followed by heading</li>
<li><strong>sub-head 2: </strong></p>
<p>This is a para followed by heading, This is a para followed by heading, This is a para followed by heading, This is a para followed by heading</li>
</ul>
Mein Ziel ist einfach Ich möchte nur alle p-Tags innerhalb li und td-Tags entfernen, die nicht in der Lage im, richtig zu tun. Jede Hilfe wird geschätzt.
Ich möchte Regex dazu verwenden. und ich weiß, dass die Verwendung von Regex nicht der richtige Weg ist, HTML-Inhalte zu parsen.
Verwenden Sie einen Parser, nicht HTML. – smathy
Ich empfehle Ihnen, Nokogiri gem. – Ilya
Wenn Sie wissen, dass es nicht der richtige Weg ist, warum? Ich meine das nicht als Beleidigung, ich bitte um eine Klarstellung - es sei denn, Sie können sehr überzeugend sein, dass ein Parser nicht die richtige Lösung ist, die möglicherweise die einzige Antwort ist, die Sie erhalten – alexanderbird