📜  php 移除 html 标签换行 - PHP (1)

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

PHP去除HTML标签和换行

在Web开发过程中,几乎所有的网页都包含HTML标记。但在PHP编程中,可能需要从文本中删除这些标记,以便更好地处理数据。在此过程中,需要注意删除空格,特殊符号和换行符。这篇文章将介绍如何使用PHP快速简便地去除HTML标签和换行符。

方法一:使用strip_tags函数

PHP提供了一个非常简单的函数strip_tags,可以用它去除HTML标签。strip_tags函数有两个参数:text和allowable_tags。text是要处理的字符串,allowable_tags是一个可选参数,表示允许的HTML标签,如果设置了该参数,则只会保留该参数所列出的标签。

以下是一个示例:

<?php 
$text="<p>This is some <strong>text</strong>.</p> And here is some more <em>text</em>.";
echo strip_tags($text); // 输出:This is some text. And here is some more text.
?>

在上面的代码中,strip_tags函数没有保留任何HTML标记,只返回纯文本。

方法二:使用preg_replace函数

preg_replace函数是另一个常用的函数,它可以用于正则表达式搜索和替换。该函数的第一个参数是匹配模式,第二个参数是一个字符串或数组,它是替换模板,第三个参数是要替换的字符串或数组。

以下是一个例子,它去除了所有的HTML标记和换行符:

<?php 
$text="<p>This is some <strong>text</strong>.</p>\n And here is some more <em>text</em>.";
echo preg_replace('/<[^>]*>/', '', $text); // 输出:This is some text. And here is some more text.
?>

在上面的代码中,正则表达式'/<[^>]*>/'表示选择'<…>'之间的所有字符串,并用''替换它们。不过,这个方法也同时去掉了换行符,需要进一步修改才能完美实现。

以下代码能够去除HTML标记但保留换行符:

<?php 
$text="<p>This is some <strong>text</strong>.</p>\n And here is some more <em>text</em>.";
echo preg_replace('/<(\/)?p[^>]*>/', '$1\n', strip_tags($text, '<p><br><br/>')); // 输出:This is some text.
                                                                                     // 
                                                                                     // And here is some more text.
?>

在上面的代码中,'



'是可选参数,保留了标签



。第一个参数'$1\n'是替换模板,$1表示在模式'/<(/)?p[^>]*>/'中开始的第一个小组。因为小组1是'/p'的反斜线,所以它保留了换行符。

结论

在上面的例子中,我们介绍了两个方法来去除HTML标记和换行符。方法一更简单,但是不能保留特定的标记。方法二更灵活,但需要使用正则表达式,在一定程度上增加了复杂性。应根据实际情况选择。