2

这是我的代码

$str="<div>this is the variable</div>";

我想在<div>不使用 strip_tags 的情况下删除它的 html 标签。我需要$str="this is the variable" 因为我的服务器没有使用 strip_tags。我知道 preg_replace 是可能的。但我不知道正则表达式。所以请给我建议解决方案。

先感谢您。

4

6 回答 6

9

如果 DIV 标记包含属性,此变体也有效:

$str = '<div id="some_id">this is the variable</div>';
$str = preg_replace('/\<[\/]{0,1}div[^\>]*\>/i', '', $str);
echo $str;
于 2012-09-19T13:00:56.857 回答
4
$s = "<div>this is the variable</div>";
echo preg_replace("/<div>(.*?)<\/div>/", "$1", $s);
// this is the variable

当然,不要用正则表达式解析 HTML :-)

演示

于 2012-09-19T12:55:11.273 回答
4

如果要删除文本周围的标签并保留其他标签,请使用:

$node = new DOMDocument();
$str = $node->loadXML($str)->firstChild->textContent;

警告:这只会删除第一个包装标签

这会将 HTML 解析为标记,它就是这样。

于 2012-09-19T13:02:29.930 回答
0

你可以这样做:

$str="<div>this is the variable</div>";
$str = preg_replace('/<(.*?)>/i', '', $str);

这将删除所有 html 标签,不仅<div>

于 2012-09-19T12:58:47.143 回答
0

利用

preg_replace("#<div>(.*?)</div>#s", "$1", $s);

s- 一个 DOTALL 修饰符,.匹配换行符。

#- 与 不同的正则表达式分隔符/,并且由于它们,不需要转义/.

解释

--------------------------------------------------------------------------------
  <div>                    '<div>'
--------------------------------------------------------------------------------
  (                        group and capture to \1:
--------------------------------------------------------------------------------
    .*?                      any character (0 or more times, the least amount possible))
--------------------------------------------------------------------------------
  )                        end of \1
--------------------------------------------------------------------------------
  </div>                   '</div>'

$1是对用括号内的第一组捕获的文本的反向引用。

于 2021-05-11T18:48:53.320 回答
-1

如果您只在这样的 div 标签之后,您可以尝试

preg_replace("</?div>","",$string);

当然有人可能会提到不要用正则表达式解析 html

于 2012-09-19T12:55:52.983 回答