PHP Strip HTML
在Web开发中常常需要从HTML代码中提取纯文本,因为HTML代码中可能有大量的标签和格式化信息,并且这些信息并不总是对于我们的应用程序有用的。
在PHP中,有许多函数可以用来剥离HTML代码中的标签和其他元素,最常用的是strip_tags()函数。该函数带有两个参数,第一个是需要进行HTML剥离的字符串,第二个是可选参数,用来指定允许保留的标签。以下是一个简单的例子:
$text = '<p>这是一个带HTML标签的段落。</p><br/><p>这是另一个带HTML标签的段落。</p>'; $stripped_text = strip_tags($text); echo $stripped_text; //输出:这是一个带HTML标签的段落。这是另一个带HTML标签的段落。
上面的例子中,我们将$text字符串中的所有HTML标签都去掉了,只保留了文本内容。
有时候我们需要保留某些标签,例如,如果我们想保留<p>标签,但去掉<script>和<style>标签,我们可以这样写:
$text = '这是一个带<p>标签的段落 <script>alert("这是JavaScript代码")</script>.<style>.red {color:red}</style>'; $stripped_text = strip_tags($text, '<p>'); echo $stripped_text; // 输出:这是一个带<p>标签的段落 。
在这个例子中,我们保留了<p>标签,而将所有其他标签都去掉了。如果您不指定第二个参数,则strip_tags()函数默认会删除所有标签。
另一个常见的用例是用strip_tags()函数从HTML代码中提取链接。我们可以使用正则表达式来捕获<a>标签中的href属性:
$html = '<p>这是一个链接:<a href="https://www.example.com">例子链接</a></p>'; $stripped_text = strip_tags($html); preg_match('/<a href=\\\\"(.*?)\\\\"/', $stripped_text, $match); $link = $match[1]; echo $link; // 输出:https://www.example.com
在这个例子中,我们用strip_tags()函数将HTML代码中的所有标签去除,并用preg_match()函数从结果中提取出了a标签中的href属性值。
最后,需要注意的是strip_tags()函数不能防止跨站脚本攻击(XSS),因为它只是删除了HTML标签,但留下了所有的脚本。因此,为了避免XSS攻击,我们需要使用其他安全措施,例如htmlspecialchars()函数。