php strip_tags,允许PHP标签?

时间:2017-06-28 09:27:49

标签: php strip-tags

我发现很多主题要求保留一些html标签,但我没有发现任何想要保留php标签的内容!

我想要这样的事情:

$myString = '<i> Hello, my name is <?php echo $firstName ?> and I'm <?php echo $age ?> </i> <div> my other div content </div>';
$myBeautifulString = strip_tags($myString, '<?php');

结果我会:

var_dump($myBeautifulString);
==> 
'Hello, my name is <?php echo $firstName ?> and I'm <?php echo $age ?> my other div content'

我需要把这个字符串的内容放到一个文件中,所以我绝对需要保留php标签!要填写的值只能在。

之后给出

6 个答案:

答案 0 :(得分:1)

我使用token_get_allstr_replace来执行此操作:

<?php

$myString = '<i> Hello, my name is <?php echo $firstName ?> and I\'m <?php echo $age ?> </i> <div> my other div content </div>';

function remove_html_tag($input)
{
  $to_return = $input;
  $tokens = token_get_all($input);
  foreach ($tokens as $token) {
    if (token_name($token[0]) == 'T_INLINE_HTML') {
      $to_return = str_replace($token[1], strip_tags($token[1]), $to_return);
    }
  }
  return $to_return;
}

function strip_html($input)
{
  return filter_var($input, FILTER_CALLBACK, ['options' => 'remove_html_tag']);
}

var_dump(strip_html($myString));

输出:

string(94) " Hello, my name is <?php echo $firstName ?> and I'm <?php echo $age ?>   my other div content "

演示:https://eval.in/823595

参考文献:

答案 1 :(得分:0)

为什么不连接字符串呢?

$myString = "Hello, my name is " .$firstName. " and i'm ".$age. "</i>";

答案 2 :(得分:0)

strip_tags的第二个参数指定允许的标记。所有其他标签都将被删除。

访问reference了解更多信息

您尚未添加a,以分隔两个参数

答案 3 :(得分:0)

   <?php
   echo $myString = "<i> Hello, my name is {$firstName} and I\'m {$age} </i> <div> my other div content </div>";

    ?>

如果你有一个包含在单个引用中的字符串并使用单个qoute作为字符串的一部分,那么它将破坏你的字符串,所以像I\'m一样转义你的字符串。

答案 4 :(得分:0)

删除起始单个代码,并将字符串括在双重代码中,如下所示

echo $myString = "<i> Hello, my name is $firstName and I'm  $age  </i> <div> my other div content </div>";

正在运行code

答案 5 :(得分:0)

来自the manual

  

注意:

     

HTML注释和PHP标记也被剥离。 这是硬编码的,无法使用allowable_tags 进行更改。

我的假设

您声称已阅读本手册,但似乎没有注意到这一重要警告。因此,在字符串中保留<?php ... ?>的解决方案是完全不使用strip_tags函数,并使用要删除的自定义标记列表创建自己的函数。

仅基本示例):

function my_strip_tags(string $string, array $tags){
     $outputString = $string;
     foreach($tags as $tag){
         $outputString = str_ireplace($tag, '', $outputString);
     }
     unset($tag);
     return $outputString;
}