除了pre标签内的内容,我如何去除html标签
代码
$content="
<div id="wrapper">
Notes
</div>
<pre>
<div id="loginfos">asdasd</div>
</pre>
";
在使用 strip_tags($content,'') 时,pre 标签内的 html 被剥离了。但我不希望预先剥离里面的 html
除了pre标签内的内容,我如何去除html标签
代码
$content="
<div id="wrapper">
Notes
</div>
<pre>
<div id="loginfos">asdasd</div>
</pre>
";
在使用 strip_tags($content,'') 时,pre 标签内的 html 被剥离了。但我不希望预先剥离里面的 html
尝试 :
echo strip_tags($text, '<pre>');
<?php
$document=html_entity_decode($content);
$search = array ("'<script[^>]*?>.*?</script>'si","'<[/!]*?[^<>]*?>'si","'([rn])[s]+'","'&(quot|#34);'i","'&(amp|#38);'i","'&(lt|#60);'i","'&(gt|#62);'i","'&(nbsp|#160);'i","'&(iexcl|#161);'i","'&(cent|#162);'i","'&(pound|#163);'i","'&(copy|#169);'i","'&#(d+);'e");
$replace = array ("","","\1","\"","&","<",">"," ",chr(161),chr(162),chr(163),chr(169),"chr(\1)");
$text = preg_replace($search, $replace, $document);
echo $text;
?>
您可以执行以下操作:
有点笨拙,但应该可以。
$text = 'YOUR CODE HERE';
$org_text = $text;
// hide content within pre tags
$text = preg_replace( '/(<pre[^>]*>)(.*?)(<\/pre>)/is', '$1@@@pre@@@$3', $text );
// filter content
$text = strip_tags( $text, '<pre>' );
// insert back content of pre tags
if ( preg_match_all( '/(<pre[^>]*>)(.*?)(<\/pre>)/is', $org_text, $parts ) ) {
foreach ( $parts[2] as $code ) {
$text = preg_replace( '/@@@pre@@@/', $code, $text, 1 );
}
}
print_r( $text );
好吧!,你只剩下一个选择:正则表达式......没有人喜欢他们,但他们肯定能完成工作。首先,用奇怪的东西替换有问题的文本,如下所示:
preg_replace("#<pre>(.+?)</pre>#", "||k||", $content);
这将有效地改变你的
<pre> blah, blah, bllah....</pre>
别的东西,然后打电话
strip_tags($content);
之后,您只需替换 ||k||(或您选择的任何内容)中的原始值,您将获得所需的结果。
我认为您的内容没有很好地存储在 $content 变量中
您可以通过将内部双引号转换为单引号来检查一次吗
$content="
<div id='wrapper'>
Notes
</div>
<pre>
<div id='loginfos'>asdasd</div>
</pre>
";
strip_tags($content, '<pre>');
您可以执行以下操作:
使用带有'e'
修饰符的 preg_replace 将 pre 标记的内容替换为一些字符串,如@@@1@@@
,@@@2@@@
等,同时将此内容存储在某个数组中运行strip_tags()
'e'
再次使用修饰符运行 preg_relace以将@@@1@@@
等恢复为原始内容。
有点笨拙,但应该可以。
请你写完整的代码。我明白了,但出了点问题。请写完整的编程代码