1 echo strip_tags('<1 php="test" >','<1>');
//输出<1 php="test" >
2 echo strip_tags('<1? php="test" >','<1?>');
//输出<1? php="test" >
3 echo strip_tags('<? php="test" >','<?>');
//无任何输出
4 echo strip_tags('<? php="test" >');
//无任何输出
4 echo strip_tags('<?1 php="test" >','<?1>');
//无任何输出但我希望在某段文本被strip_tags处理后,对3、4、5的情形依然能够输出。而不要被删除。--------------------------------------------------
内容说明
本函数可去掉字符串中包含的任何 HTML 及 PHP 的标记字符串。若是字符串的 HTML 及 PHP 标签原来就有错,例如少了大于的符号,则也会返回错误。而本函数和 fgetss() 有着相同的功能。
--------------------------------------------------以上话中“PHP 的标记字符串”,很不好理解哪位能准确描述出strip_tags()的行为作用呢?

解决方案 »

  1.   

    Note: HTML comments and PHP tags are also stripped. This is hardcoded and can not be changed with allowable_tags .
      

  2.   

    看懂了就不是没有说了意思就是你换个思路去实现你的要求,别在strip_tags函数上花心思。除非你改写php
      

  3.   


    你那段英文和上面的中文内容说明,表达的意思有什么不一样吗?所以说是等于没说。但出于对strip_tags的准确把握的目的出发,希望对strip_tags的行为有准确的了解还是很有必要的。比如我开始以为echo strip_tags('<? php="test" >');它应该有输出,所以我已经使用了strip_tags函数,但现在我发现不是这样的,我的代码就只能出避免使用strip_tags函数?换句话说我如果不能对它有准确的了解的话,今后根本就不能确定是否可以使用strip_tags函数。那么请问大家,这样一个函数大家都是从来不使用的?还是没发现它隐藏了某些你所不期望的行为,而你目前根本就没发现你的代码存在那样的bug?
      

  4.   

    PHP 的标记字符串 =>  <? 和 <?php 和 ?> 另外, 2楼的英文和你引用的中文不是一样的意思.....
      

  5.   

    HTML comments and PHP tags会被过滤,无视你strip_tags的第二个参数怎么设置,也就是那段英文的allowable_tags那么对于'<? php="test" >'的字符串
    “但我希望在某段文本被strip_tags处理后,对3、4、5的情形依然能够输出。而不要被删除。”
    你的希望不会达成,所以我前面建议你想别的办法处理字符串,而不要费时间在这个函数上
    至于用法,你了解这个以后,别的标签需要例外不过滤的,放在第二个参数即可
      

  6.   

    不知道php换个界定符会不会被干掉,例如<% %>之类的?恩,手动试试去。。
      

  7.   

    为题就在于“PHP tags”的理解上,我把“<? ?>、<?php ?>”理解为“PHP tags”,但“<?1 php="test" >”这个错乱的字符串,怎么能理解为“PHP tags”。
      

  8.   

    <?1 包含了 <?。只能是这样去看待了。不好意思,前面话说的有些急。不过,通过这样的争论,确实有一个非常清晰的把握。你开始提供的那段英文也只是概念“php tags”,所以我话说的有些急。