PalleMedlem sedan apr. 20003 174 inlägg Gomiddag alles. :bire
Jag är i behov att i en sträng lägga in lite html-taggar på vissa stället, men för mig fungerar det inte alls. :bla
Ett exempel på strängen ser ut som följer:
Lorem ipsum dolor sit amet, consectetuer adipiscing elit
curabitur congue vulputate est
in sed sem in sapien aliquam molestie.
I denna sträng behöver jag nu lägga in <li> och </li> i början och slutet på varje ny rad.. men jag får det bara inte att fungera.
Jag vill alltså att ovanstående omvandlas till:
<li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit</li>
<li>curabitur congue vulputate est</li>
<li>in sed sem in sapien aliquam molestie.</li>
Tips, lösningar eller kommentarer på detta? :f
Peter SMedlem sedan dec. 20025 483 inlägg .replace(/(^|(?:\n|\r){1,2})/g, '$1<li>')
.replace(/((?:\n|\r){1,2}|$)/g, '</li>$1')
PalleMedlem sedan apr. 20003 174 inlägg Kung! (y)
Tack Peter, fungerar finemang! :f
Dock skulle jag även behöva hjälp med ännu ett pattern. :P
En del data i systemet innehåller content som inte är valid html, så dessa skulle jag behöva rätta till. :)
Ex. så kan en del data se ut så här:
<ul>
<li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit
<li>curabitur congue vulputate est<li>in sed sem in sapien
aliquam molestie.<li>Morbi elementum velit sed lacus. Cras
dapibus.<li>Nam arcu. Maecenas leo.
<li>Ut lectus dui, pulvinar sed, faucibus in, tincidunt a,
mauris.<li>Cum sociis natoque penatibus et magnis dis parturient
montes, nascetur ridiculus mus.</li>
</ul>
Skulle alltså behöva lägga in de avslutande </li>-taggarna på de ställen där dom saknas.
Idéer om detta? :)
Peter SMedlem sedan dec. 20025 483 inlägg Testa denna:
.replace(/(<li>(?:[\n\r\w\.,\s]|<\/?(?:p|h[1-6]|[dou]l|pre|div|(?:no)?script|blockquote|form|hr|table|fieldset|address|tt|[abiq]|big|small|em|strong|dfn|code|samp|kbd|var|cite|abbr|acronym|img|object|br|map|su[bp]|span|bdo|input|select|textarea|label|button)>)*)(?=<li>|(?:[\n\r\w\.,\s]|<\/?(?:p|h[1-6]|[dou]l|pre|div|(?:no)?script|blockquote|form|hr|table|fieldset|address|tt|[abiq]|big|small|em|strong|dfn|code|samp|kbd|var|cite|abbr|acronym|img|object|br|map|su[bp]|span|bdo|input|select|textarea|label|button)>)*<\/ul>)/gi,'$1</li>')
Det smyger sig in oönskat whitespace i koden ovan. Fyra stycken bestämt, tror jag det är.
PalleMedlem sedan apr. 20003 174 inlägg Nice Peter, det fungerar hyggligt bra, dock inte till 100% ännu. ;)
Vissa längre listor innehåller redan xhtml i form av avslutande />, ex. <br />, och då
falerar denna replace.
Har försökt mickla in detta i din snutt - tyvärr utan fungerande resultat. :(
Peter SMedlem sedan dec. 20025 483 inlägg .replace(/(<li>(?:[\n\r\w\.,\s]|<\/?(?:p|h[1-6]|[dou]l|pre|div|(?:no)?script|blockquote|form|hr|table|fieldset|address|tt|[abiq]|big|small|em|strong|dfn|code|samp|kbd|var|cite|abbr|acronym|img|object|br|map|su[bp]|span|bdo|input|select|textarea|label|button)(?:\s*\/)?>)*)(?=<li>|(?:[\n\r\w\.,\s]|<\/?(?:p|h[1-6]|[dou]l|pre|div|(?:no)?script|blockquote|form|hr|table|fieldset|address|tt|[abiq]|big|small|em|strong|dfn|code|samp|kbd|var|cite|abbr|acronym|img|object|br|map|su[bp]|span|bdo|input|select|textarea|label|button)(?:\s*\/)?>)*<\/ul>)/gi,'$1</li>');
Beware of whitespace...