在我的一个应用程序中,我需要删除或删除所有html标记属性中的特定标记,如:
<div<del>class</del>=<del>"example"</del>>
我想删除从服务器端脚本生成的所有这些<del>
标记。我使用以下preg_replace
:
preg_replace("/<.*?>/", "", $string);
但它正在替换所有标签,我只想替换html标签内的标签。我不想删除所有<del>
标记。我只想删除那些出现在html标记内的<del>
标记。
答案 0 :(得分:1)
使用正则表达式:
<[^<>]+>
其中[^<>]+
是与<>
除外的所有字符匹配的否定类。
但是,如果你的html标签里面没有那些标签,它也会替换html标签。
如果是这样,你可以试试这个正则表达式:
(?<==|")<[^<>]+>
编辑:如果您的问题具体,您应该在问题中更具体。
只需使用正则表达式替换:
<\/?del>
答案 1 :(得分:1)
你可以这样做:
preg_replace('/(?>(?><|\G(?<!^))[^<>]++\K|\G(?<!^))<[^>]++>/', '', '<div class=<some_tag>"example"</some_tag>>');
模式细节:
(?> # non capturing group (atomic)
(?>
<|\G(?<!^) # < or a contigous match
)
[^<>]++\K # common content of the good tag until a bracket (\K reset the match)
| # OR
\G(?<!^) # a contiguous match not at the start of the string
) # close the non capturing group
<[^>]++> # the ugly tag to remove
答案 2 :(得分:0)
您可以使用此功能
strip_tags('<div<del>class</del>=<del>"example"</del>>', '<del>');
如果您使用 strip_tags 功能,您将获得以下输出
'<div class="example">'
祝你好运......