我想使用jquery的函数包装,或者使用其他解决方案,但是我需要包装div的内容,并排除诸如<sup>
<i>
<strong>
之类的特定标签。我用下面的例子解释
我有这个:
<div>
my test without tag<sup>1</sup> and the end of sentence.
<p>text with tag p <br />
break line
</p>
Second sentence without <i>tag</i> and the end.
<div>
我想要这样:
<div>
<p>my test without tag<sup>1</sup> and the end of sentence.</p>
<p>text with tag p <br />
break line
</p>
<p>Second sentence without <i>tag</i> and the end.<p>
<div>
所以我在JS中使用JQuery
$( "div" )
.contents()
.filter(function(){
return this.nodeType !== 1;
})
.wrap( "<p></p>" );
但是这个JS做到了:
<div>
<p>my test without tag</p>
<sup>1</sup>
<p> and the end of sentence.</p>
<p>text with tag p <br>
break line
</p>
<p>Second sentence without </p><i>tag</i><p> and the end.</p>
</div>
我创建了这个jsFiddle
答案 0 :(得分:3)
function wrapElements(elements){
$(elements).wrapAll('<p></p>');
}
$('div').each(function(){
var elementsToWrap=[];
var contents=$(this).contents();
contents.each(function(){
if($(this).text().trim()){
if(this.nodeName!='P'){
elementsToWrap.push(this);
}else{
wrapElements(elementsToWrap)
elementsToWrap=[];
}
}
});
if(elementsToWrap.length)
wrapElements(elementsToWrap);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
my test without tag<sup>1</sup> and the end of sentence.
<p>text with tag p <br />
break line
</p>
Second sentence without <i>tag</i> and the end.
</div>
看看上面的代码。它产生正确的输出。但我相信它可以进一步改善。
注意:我使用了P
标签来比较该标签是否为段落标签,否则我一直持有它直到得到下一个P
标签并将所有包装在{{1}中} 标签。 (可能有很多其他逻辑可以做到这一点)
答案 1 :(得分:1)
基本上,我觉得根本不需要使用curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
。我认为,最好的方法是将html视为String并通过使用RegExp(这是(\ w [uniq tag1 | uniq tag1] \ w)文本的一种)来替换所有出现的内容。
在How to replace all occurrences of a string in JavaScript?上查看有关此内容的更多信息
另一个选择是创建递归函数,该函数保留上一个并测试当前节点和下一个节点。通过使用这种功能,您可以创建新的html,然后将其替换为wrap
答案 2 :(得分:1)
考虑到您知道需要用标签换行的文本 您可以执行以下操作
var op = "<div> my test without tag<sup>1</sup> and the end of sentence.<p>text with tag p <br /></p>Second sentence without <i>tag</i> and the end.<div>"
var text = 'my test without tag<sup>1</sup> and the end of sentence.' // The text that you need to wrap around
var re = new RegExp('('+text+')', 'i');
op.replace(re,'<p>$1</p>')