编辑:我有一个在标签之间包装字符串的函数。我希望只有在字符串不包含任何标记时才应用此函数。
if string: "text" then "<b>text</b>";
else if string "<b>text</b>" then "text";
我需要一个条件语句来检查给定的标签,并仅在找到标签时剥离标签。
例如。 function stripTags(string, "span")
1-搜索给定的标签(在这种情况下为span)
2-如果找到,剥离标签
答案 0 :(得分:6)
function stripTags(string, tag) {
var tagMatcher = new RegExp('</?' + tag + '>','g');
return string.replace(tagMatcher, '');
}
删除字符串中的任何标记或
function toggleSurroundingTags(string, tag) {
var tagMatcher = new RegExp('^<' + tag + '>(.*)</' + tag + '>$');
var match = tagMatcher.exec(string);
if (match) {
return match[1];
} else {
return '<' + tag + '>' + string + '</' + tag + '>';
}
}
删除周围标记(如果它们存在)并添加它们(如果它们不存在):
toggleSurroundingTags('hello', 'b'); // returns '<b>hello</b>'
toggleSurroundingTags('<b>hello</b>', 'b'); // returns 'hello'
答案 1 :(得分:3)
退房:
<强>来源:强>
function strip_tags (input, allowed) {
// http://kevin.vanzonneveld.net
// + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + improved by: Luke Godfrey
// + input by: Pul
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + bugfixed by: Onno Marsman
// + input by: Alex
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + input by: Marc Palau
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + input by: Brett Zamir (http://brett-zamir.me)
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + bugfixed by: Eric Nagel
// + input by: Bobby Drake
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + bugfixed by: Tomasz Wesolowski
// + input by: Evertjan Garretsen
// + revised by: Rafał Kukawski (http://blog.kukawski.pl/)
// * example 1: strip_tags('<p>Kevin</p> <br /><b>van</b> <i>Zonneveld</i>', '<i><b>');
// * returns 1: 'Kevin <b>van</b> <i>Zonneveld</i>'
// * example 2: strip_tags('<p>Kevin <img src="someimage.png" onmouseover="someFunction()">van <i>Zonneveld</i></p>', '<p>');
// * returns 2: '<p>Kevin van Zonneveld</p>'
// * example 3: strip_tags("<a href='http://kevin.vanzonneveld.net'>Kevin van Zonneveld</a>", "<a>");
// * returns 3: '<a href='http://kevin.vanzonneveld.net'>Kevin van Zonneveld</a>'
// * example 4: strip_tags('1 < 5 5 > 1');
// * returns 4: '1 < 5 5 > 1'
// * example 5: strip_tags('1 <br/> 1');
// * returns 5: '1 1'
// * example 6: strip_tags('1 <br/> 1', '<br>');
// * returns 6: '1 1'
// * example 7: strip_tags('1 <br/> 1', '<br><br/>');
// * returns 7: '1 <br/> 1'
allowed = (((allowed || "") + "")
.toLowerCase()
.match(/<[a-z][a-z0-9]*>/g) || [])
.join(''); // making sure the allowed arg is a string containing only tags in lowercase (<a><b><c>)
var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi,
commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
return input.replace(commentsAndPhpTags, '').replace(tags, function($0, $1){
return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
});
}
答案 2 :(得分:0)
我假设你正在寻找一个javascript答案。我不是一个jQuery人...这使用了dom,因此浏览器的实现可能最终改变大小写或丢弃它无法识别的属性......
function stripTags(string) {
if (!arguments.callee._tempNode) {
arguments.callee._tempNode = document.createElement('div');
}
var node = arguments.callee._tempNode;
node.innerHTML = string;
var i=arguments.length;
while (--i) { // decrement first so the string var won't be processed
var toRemove = node.getElementsByTagName(arguments[i]);
while (toRemove.length) {
toRemove[0].parentNode.removeChild(toRemove[0]);
}
}
return node.innerHTML;
}