【问题标题】:How to remove only html tags in a string?如何仅删除字符串中的html标签?
【发布时间】:2012-07-09 21:31:14
【问题描述】:

我已经编写了删除 HTML 标记的代码,但它也删除了 a<b 类型的字符串。我希望它不要删除像 2<3 或 a<b 这样的字符串。

$term="a<b";
echo "Text is--->".preg_replace('/(?:<|&lt;).+?(?:>|&gt;)/', '', $term);

如何在不删除 LT 或 GT 的情况下删除字符串中的 html 标签?

【问题讨论】:

  • 你为什么不用strip_tags?
  • 使用正确的实体:$term = "a&amp;lt;b";,尖括号应该不输出到 HTML 除非它们是标签开头的一部分,或者关闭。鉴于正则表达式,这不会阻止您的问题,但是为什么要同时删除 &amp;lt; 和 &amp;lt; 和 then 正则表达式有问题,不允许 a&lt;b 通过不受影响?跨度>
  • 顺便说一句:如果你进行了正确的输出编码,你可能不需要删除标签(除非这真的是 HTML 并且你想从中获取明文(在这种情况下,但是 "a

标签: php regex


【解决方案1】:

对不起,我没有足够的验证。

我已经检查了下面的 php5-cli 表达式。

(?:<|&lt;)\/?([a-zA-Z]+) *[^<\/]*?(?:>|&gt;)

PHP 代码如下:

#!/usr/bin/php 
<?php

$str = "<html></html>
a<b 1<2 3>1 
<body>1>2</body>
<style file=\"'googe'\" alt=\"google\">hello world</style>
<have a good efghijknopqweryuip[]asdfgghjkzxcv bnm,.me>hello world<> google com</s>
<a se=\"font: googe;\">abcde</a>";

echo "text--->".preg_replace('/(?:<|&lt;)\/?([a-zA-Z]+) *[^<\/]*?(?:>|&gt;)/', '', $str)."\n";

?>

结果:

text--->
a<b 1<2 3>1 
1>2
hello world
hello world<> google com
abcde

【讨论】:

  • 使用这个正则表达式,“>”会变成“”。如果您想阻止用户添加自己的 HTML,请不要使用它,因为他们可以绕过它。
【解决方案2】:

使用php的strip tags功能

echo strip_tags($html)

【讨论】:

  • 我使用了 strip_tags(),但这会从“a
【解决方案3】:

strip_tags 函数是很好的解决方案。

但如果您需要正则表达式,请使用下面的表达式。

(?:&lt;|&amp;lt;)\/?([a-z]+) *[^\/(?:&lt;|&amp;lt;)]*?(?:&gt;|&amp;gt;)

【讨论】:

  • 您好,谢谢您的回复。 strip_tags() 正在从“a
【解决方案4】:

从带有内容的 PHP 字符串中删除所有 HTML 标记!

假设你有一个包含锚标记的字符串,并且你想用内容删除这个标记,那么这个方法会很有帮助。

$srting = '<a title="" href="/index.html"><b>Some Text</b></a> a<b';

echo strip_tags_content($srting);

function strip_tags_content($text) {

    return preg_replace('@<(\w+)\b.*?>.*?</\1>@si', '', $text);
    
 }

输出:

一个

检索自:Remove all html tags from php string

【讨论】:

    【解决方案5】:

    使用strip_tags

    //If you want to allow some tags
    $term = strip_tags($term,"<b>");
    

    【讨论】:

    • 这将删除任何未列出的值。因此,如果您想允许任何数学形式,例如x&lt;y 您必须在允许的标签区域中列出每个组合。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    相关资源
    最近更新 更多