Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var str = '<p><a href="http://www.dk-kogebogen.dk/opskrifts-service/dagens_opskrift.php?personer=1">http://www.dk-kogebogen.dk/..</a></p><p><u><a href="http://www.google.dk/ig"><em>test</em></a></u></p><p><strong><s>nyt</s></strong></p>';
- function NES_convertHTMLToBB(text) {
- function parse() {
- function parseTag(tag) {
- // tag = '<tag attr=value attr2=value2>' (u.s.w. med attr'erne)
- // eller '<tag>'
- var tagmatch = /^<([a-z]+)>/.exec(tag);
- // Har attr, else har ikke
- if (tagmatch == null) {
- var tag2 = tag.substr(tag.indexOf(' ') + 1).substr(0, tag.length - 1),
- regmatch, tagattrs = {},
- tagreg = /([^= ]+)="([^"]+)"/g;
- while (regmatch = tagreg.exec(tag2)) {
- tagattrs[regmatch[1]] = regmatch[2];
- }
- return {
- tag: /^<([a-z]+) /.exec(tag)[1],
- attr: tagattrs
- }
- } else {
- return {
- tag: tagmatch[1],
- attr: null
- }
- }
- }
- while (true) {
- // Hvis nået slutningen
- if (i >= len)
- return;
- s = text.substr(i);
- l = s.indexOf('<');
- // Hvis løbet tør for HTML
- if (l === -1) {
- t += s;
- return;
- }
- t += text.substr(i, l);
- i += s.indexOf('>') + 1;
- // Hvis nået et end-tag, else hvis nået et start-tag
- if (s.substr(l + 1, 1) === '/') {
- // quote-halløj kommer her
- return;
- } else {
- //console.log('start-tag: ' + s.substr(l));
- var obj = parseTag(s.substr(l, s.indexOf('>') + 1));
- switch (obj.tag) {
- case 'strong':
- t += '[b]';
- parse();
- t += '[/b]'
- break;
- case 'u':
- t += '[u]';
- parse();
- t += '[/u]'
- break;
- case 'em':
- t += '[i]';
- parse();
- t += '[/i]'
- break;
- case 's':
- t += '[s]';
- parse();
- t += '[/s]'
- break;
- case 'a':
- switch (obj.attr.data) {
- case 'NES_img':
- t += '[url=' + obj.attr.href + ']' + obj.attr.href + ' (billede)[/url]';
- i += 4;
- break;
- case 'NES_ref':
- t += obj.attr.href;
- i += s.indexOf('>') + 1; // Ja, to gange!
- break;
- default:
- // Normal a, enten som [url] eller en url uden [url]
- // url uden [url] bliver konverteret til en [url], men det er ikke svært at lave den rigtigt
- t += '[url=' + obj.attr.href + ']';
- parse();
- t += '[/url]';
- break;
- }
- break;
- default:
- console.log('NES: Parse fejlede. Data:');
- console.log(obj);
- return;
- }
- }
- }
- }
- text = text.replace(/<\/p><p>/g, '\n\n').replace(/<\/p>|<p>/g, '').replace(/<img [^>]+>/g, '');
- var t = '', // parsed text
- i = 0, // position i text
- l = 0, // position af '<' i s
- s = '', // text.substr(i) aka bid af tekst, som arbejdes med
- len = text.length;
- // |--------- text ---------|
- // |-- s --|< (s stopper ved den første '<')
- // 0 i i+l (position set fra text)
- // 0 l (position set fra s)
- // Længden af s er derfor i+l-i = l (medtager ikke '<')
- parse();
- return t;
- }
- NES_convertHTMLToBB(str);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement