📜  php 删除 html 标签 - PHP (1)

📅  最后修改于: 2023-12-03 15:03:41.334000             🧑  作者: Mango

PHP 删除 HTML 标签

在应用程序中,有时需要从用户输入的文本中删除 HTML 标签(如 <div><p><a> 等),以防止 XSS 攻击和其他安全漏洞。PHP 作为一种常用的服务器端编程语言,提供了多种方法来删除 HTML 标签。

方法一:使用 strip_tags 函数

PHP 的 strip_tags 函数可以删除指定字符串中的 HTML 标签,并返回结果。

$string = '<p>Hello, <a href="https://www.example.com">World</a>!</p>';
$clean_string = strip_tags($string);
echo $clean_string; // 输出:Hello, World!

如果想保留一些标签,可以使用第二个参数来指定保留的标签。

$string = '<p>Hello, <a href="https://www.example.com">World</a>!</p>';
$clean_string = strip_tags($string, '<p>');
echo $clean_string; // 输出:<p>Hello, World!</p>
方法二:使用正则表达式

正则表达式也可以用来删除 HTML 标签。下面是一个简单的示例:

$string = '<p>Hello, <a href="https://www.example.com">World</a>!</p>';
$clean_string = preg_replace('/<[^>]*>/', '', $string);
echo $clean_string; // 输出:Hello, World!

这个正则表达式匹配任何以 < 开头、以 > 结尾的字符串,并将其替换为空字符串。

方法三:使用 DOM 操作

如果需要更精细地控制 HTML 标签的删除,可以使用 PHP 的 DOM 操作库。下面是一个示例代码:

$string = '<p>Hello, <a href="https://www.example.com">World</a>!</p>';
$doc = new DOMDocument();
$doc->loadHTML($string);
$body = $doc->getElementsByTagName('body')->item(0);
$clean_string = $doc->saveXML($body);
echo $clean_string; // 输出:Hello, World!

这个代码片段将 HTML 字符串加载到一个 DOMDocument 对象中,然后通过 getElementsByTagName 方法选择 body 标签,最后使用 saveXML 方法将结果转换为字符串。

以上是 PHP 删除 HTML 标签的三种方法,可以根据具体需求选择。需要注意的是,删除 HTML 标签可能会导致文本排版混乱,因此仅在必要时使用。