我想将javascript HTML转换器转换为Text。一切都完成我工作得很好,但我无法处理链接。我需要在文本版本链接中生成的reg表达式为
Html版本:
<a href="http://link.com">Link text</a>
将链接转换为文字版本:
Link text(http://link.com)
我的代码
$('body').on('click','[data-action="convertTemplateToText"]', function() {
var html = $("#clientHTML").val();
if (html) {
html = html.replace(/<!doctype.*>/i,"");
html = html.replace(/<head>[\w\W]*?<\/head>/i,"");
html = html.replace(/<style.*>[\w\W]*?<\/style>/gi,"");
html = html.replace(/<script.*>[\w\W]*?<\/script>/gi,"");
html = html.replace(/\n|\r/g," ");
html = html.replace(/\<\/p\>/gi,"\n");
html = html.replace(/\<\/li\>/gi," ");
html = html.replace(/\<br\s*?\/?\>/gi,"\n");
html = strip_tags(html,'<a>');
html = html_entity_decode(html,'HTML_ENTITIES');
html = html.replace(/([ \t])+/g," ");
html = html.replace(/\n /g,"\n");
if (html.charAt(0) == ' ') {
html = html.substr(1);
}
} else {
html = '';
}
$("#clientText").val(html);
$('#templateTextContainer').slideDown(500);
return false;
});
请帮帮我
答案 0 :(得分:3)
你可以使用TextVersionJS这是一个解决同样问题的开源库。它不依赖于任何其他库,您也可以在浏览器和node.js中使用它。
答案 1 :(得分:0)
我不知道你是否正在使用jQuery,但有了它,它很简单:
$('a').each(function() {
var $text = $(this).html();
var $link = $(this).attr('href');
$(this).after($text+" ("+$link+")");
$(this).remove();
});
EDIT3(来自评论的更正错误):
好的,我已经达到了你的需要:
/<\s*a.*?href\s*=\s*(?:"|')(.*?)(?:"|')[^>]*>(.*?)<\s*?\/\s*?a\s*?>/ig
替换将是:
$2 ($1)
以下是一个工作示例:http://regexr.com/38qgv
我还添加了一项检查,以包含格式错误的代码,例如< a href = "">
或< / a >
答案 2 :(得分:0)
<!DOCTYPE html>
<body>
<div id='tempDiv'></div>
<script>
var html
html='<h3><a href="//stackoverflow.com">current community</a></h3>'
alert(toText(html))
以下函数将传递给它的任何html内容转换为文本
function toText(content) {
document.getElementById('tempDiv').innerHTML = content
return document.getElementById('tempDiv').textContent
}
</script>
</body>
</html>