除了预标签内的内容
之外,我如何去除html标签码
$content="
<div id="wrapper">
Notes
</div>
<pre>
<div id="loginfos">asdasd</div>
</pre>
";
使用strip_tags($ content,'')时,pre标签内的html也被剥离了。但我不希望html里面被剥离
答案 0 :(得分:2)
尝试:
echo strip_tags($text, '<pre>');
答案 1 :(得分:1)
<?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;
?>
答案 2 :(得分:1)
您可以执行以下操作:
有点kludgy但应该工作。
答案 3 :(得分:1)
$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 );
答案 4 :(得分:0)
好吧!你只留下一个选择:正则表达式...没有人喜欢他们,但他们确实完成了工作。首先,用一些奇怪的东西替换有问题的文本,如:
preg_replace("#<pre>(.+?)</pre>#", "||k||", $content);
这将有效地改变你的
<pre> blah, blah, bllah....</pre>
其他内容,然后调用
strip_tags($content);
之后,您只需替换|| k ||(或您选择的任何内容)中的原始值,即可获得所需的结果。
答案 5 :(得分:0)
我认为你的内容并没有很好地保存在$ content变量
中你可以通过将内部双引号转换为单引号来检查一次
$content="
<div id='wrapper'>
Notes
</div>
<pre>
<div id='loginfos'>asdasd</div>
</pre>
";
strip_tags($content, '<pre>');
答案 6 :(得分:0)
您可以执行以下操作:
将preg_replace与'e'
修饰符一起使用,将pre标记的内容替换为@@@1@@@
,@@@2@@@
等字符串,同时将此内容存储在某些数组中
运行strip_tags()
再次使用'e'
修饰符运行preg_relace,将@@@1@@@
等恢复为原始内容。
有点kludgy但应该工作。
请你写完整的代码。我明白了,但出了点问题。请编写完整的编程代码