10

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

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

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

4

5 回答 5

10

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

我检查了下面的 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
于 2012-07-11T08:55:46.260 回答
8

使用php的strip tags功能

echo strip_tags($html)
于 2012-07-10T11:57:11.257 回答
1

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

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

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

于 2012-07-10T12:49:51.953 回答
1

从带有内容的 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);
    
 }

输出:

a < b

检索自:从 php 字符串中删除所有 html 标记

于 2017-04-24T05:36:46.767 回答
-1

使用strip_tags

//If you want to allow some tags
$term = strip_tags($term,"<b>");
于 2012-07-10T11:59:53.790 回答