这是我的代码
$str="<div>this is the variable</div>";
我想在<div>
不使用 strip_tags 的情况下删除它的 html 标签。我需要$str="this is the variable"
因为我的服务器没有使用 strip_tags。我知道 preg_replace 是可能的。但我不知道正则表达式。所以请给我建议解决方案。
先感谢您。
如果 DIV 标记包含属性,此变体也有效:
$str = '<div id="some_id">this is the variable</div>';
$str = preg_replace('/\<[\/]{0,1}div[^\>]*\>/i', '', $str);
echo $str;
$s = "<div>this is the variable</div>";
echo preg_replace("/<div>(.*?)<\/div>/", "$1", $s);
// this is the variable
当然,不要用正则表达式解析 HTML :-)
演示。
如果要删除文本周围的标签并保留其他标签,请使用:
$node = new DOMDocument();
$str = $node->loadXML($str)->firstChild->textContent;
警告:这只会删除第一个包装标签
这会将 HTML 解析为标记,它就是这样。
你可以这样做:
$str="<div>this is the variable</div>";
$str = preg_replace('/<(.*?)>/i', '', $str);
这将删除所有 html 标签,不仅<div>
利用
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
是对用括号内的第一组捕获的文本的反向引用。