欢迎访问宙启技术站
智能推送

使用strip_tags()函数从PHP中的字符串中删除HTML标记

发布时间:2023-06-23 15:06:51

在Web开发中,经常需要从用户输入的内容或数据库存储的内容中删除HTML标记,以保证输出的安全性和可读性。在PHP中,可以使用内置函数strip_tags()来实现这个功能。

strip_tags()函数的语法如下:

string strip_tags ( string $str [, string $allowable_tags ] )

个参数$str表示要处理的字符串,第二个参数$allowable_tags表示允许保留的标记。如果不指定$allowable_tags,则会删除所有的标记。

下面是一个例子:

<?php
$str = "<h1>Hello, World!</h1><p>This is a <strong>test</strong> paragraph.</p>";
echo strip_tags($str);
?>

输出:

Hello, World!This is a test paragraph.

可以看到,函数strip_tags()成功地删除了字符串$str中的所有HTML标记。

有时候,我们可能希望保留某些标记,例如链接标记<a>或加粗标记<strong>。这时,可以将这些标记的名称指定给$allowable_tags参数。例如,以下代码演示了如何保留链接标记:

<?php
$str = "<p>Please visit <a href='https://www.example.com'>our website</a> for more information.</p>";
echo strip_tags($str, "<a>");
?>

输出:

Please visit <a href='https://www.example.com'>our website</a> for more information.

可以看到,函数strip_tags()只删除了除链接标记<a>以外的所有标记。

除了以上使用方法以外,还有一些注意事项需要注意:

1. 相对路径。当保留链接标记<a>时,如果链接使用的是相对路径,那么这个链接不会被保留。为了解决这个问题,可以在字符串中添加base标记,指定链接的基础路径。例如:

<?php
$str = "<base href='https://www.example.com'><a href='/about'>About us</a>";
echo strip_tags($str, "<a>");
?>

输出:

<a href='https://www.example.com/about'>About us</a>

可以看到,函数strip_tags()成功地将相对路径转换为绝对路径,保留了链接标记。

2. 编码。由于HTML标记中可能包含特殊字符(例如&lt;或&gt;),在使用strip_tags()函数时需要注意编码问题。如果字符串中包含特殊字符,需要在调用strip_tags()函数之前将其进行编码。例如:

<?php
$str = "<p>This is a &lt;test&gt; paragraph.</p>";
$str = htmlspecialchars($str);
echo strip_tags($str);
?>

输出:

This is a test paragraph.

可以看到,函数strip_tags()成功地删除了字符串$str中的所有HTML标记,同时也保留了特殊字符。

总之,strip_tags()函数是PHP中一个非常实用的函数,可以方便地从字符串中删除HTML标记,提高Web开发的安全性和可读性。在使用过程中需要注意上述注意事项,以保证函数的正常使用。