我发现很多主题要求保留一些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标签!要填写的值只能在。
之后给出答案 0 :(得分:1)
我使用token_get_all
和str_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 "
参考文献:
答案 1 :(得分:0)
为什么不连接字符串呢?
$myString = "Hello, my name is " .$firstName. " and i'm ".$age. "</i>";
答案 2 :(得分:0)
答案 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;
}