【问题标题】:Stripping html tags using php使用 php 去除 html 标签
【发布时间】:2010-12-09 07:26:28
【问题描述】:

除了pre标签内的内容外,我如何去除html标签

代码

$content="
    <div id="wrapper">

    Notes


    </div>


    <pre>
    <div id="loginfos">asdasd</div>

    </pre>
";

在使用 strip_tags($content,'') 时,pre 标签内的 html 被剥离了。但我不想把里面的 html 预先剥离掉

【问题讨论】:

  • 你能检查更新的答案吗?

标签: php strip-tags


【解决方案1】:

试试:

echo strip_tags($text, '<pre>');

【讨论】:

  • 很好 是的,我用 pre 而不是 pre 但没有结果..我对 strip_tags($content,'
    ') 的问题有它..但是 stackoverflow 在问题上激起了我的 pre 标签
  • 我试过了.. 但问题是 pre 里面的 html 也有检查条纹
【解决方案2】:

您可以执行以下操作:

  1. 使用 preg_replace 和 'e' 修饰符将 pre 标记的内容替换为一些字符串,如 @@@1@@@、@@@2@@@ 等,同时将这些内容存储在某个数组中
  2. 运行 strip_tags()
  3. 再次运行带有'e'修饰符的preg_relace,将@@@1@@@等恢复为原始内容。

有点笨拙,但应该可以。

【讨论】:

    【解决方案3】:
     <?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;
                        ?>
    

    【讨论】:

      【解决方案4】:
      $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 );
      

      【讨论】:

        【解决方案5】:

        好吧!,你只剩下一个选择:正则表达式......没有人喜欢他们,但他们肯定能完成工作。首先,用奇怪的东西替换有问题的文本,如下所示:

        preg_replace("#<pre>(.+?)</pre>#", "||k||", $content);
        

        这将有效地改变你的

        <pre> blah, blah, bllah....</pre>
        

        换别的东西,然后打电话

        strip_tags($content);
        

        之后,您只需替换 ||k||(或您选择的任何内容)中的原始值即可获得所需的结果。

        【讨论】:

          【解决方案6】:

          我认为您的内容没有很好地存储在 $content 变量中

          您可以通过将内部双引号转换为单引号来检查一次

          $content="
              <div id='wrapper'>
          
              Notes
          
          
              </div>
          
          
              <pre>
              <div id='loginfos'>asdasd</div>
          
              </pre>
          ";
          
          
          strip_tags($content, '<pre>');
          

          【讨论】:

          • 我不认为这是什么意思 - 这段代码会保持 pre 标签完好无损,但仍会剥离 pre 标签内的标签。
          【解决方案7】:

          您可以执行以下操作:

          使用带有'e' 修饰符的preg_replace 将pre 标签的内容替换为@@@1@@@@@@2@@@ 等字符串,同时将这些内容存储在某个数组中 运行strip_tags()

          再次运行带有'e'修饰符的preg_relace,将@@@1@@@等恢复为原始内容。

          有点笨拙,但应该可以。

          能否请你写完整的代码。我明白了,但出了点问题。请写完整的编程代码

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-03-11
            • 2017-03-06
            • 1970-01-01
            • 2012-10-19
            • 1970-01-01
            • 2023-02-01
            • 1970-01-01
            相关资源
            最近更新 更多