我有一个字符串,我会得到这么多的html标签我想用空格替换它们。我们怎么做才能建议我。这是我的字符串:
Wrong html <a> </I> <p>My paragraph</p> <i>Italics</i> <p class="blue">second</p> and the string is <br> after that test.
我试过这个,但这不起作用:
$string =~ s/(<((?!br|p)[^>]+)>)//ig;
答案 0 :(得分:1)
您需要处理结束标记:
use Modern::Perl;
my $str = 'Wrong html <a> </I> <p>My paragraph</p> <i>Italics</i> <p class="blue">second</p> and the string is <br> after that test.';
$str =~ s~<(?!/?\s*br|/?\s*p)[^>]+>~~ig;
say $str;
您还可以使用包HTML::StripTags:
use HTML::StripTags qw(strip_tags);
my $str = 'Wrong html <a> </I> <p>My paragraph</p> <i>Italics</i> <p class="blue">second</p> and the string is <br> after that test.';
my $allowed_tags = '<p><br>';
say strip_tags( $str, $allowed_tags );
答案 1 :(得分:-1)
在正则表达式中,您没有提到替换字符或分隔符。在您的情况下,您应该用空格替换。 正则表达式是:
$msg =~s/(<((?!br|p)[^>]+)>)/ /ig;