php - preg_replace 所有跨度及其内容无效
问题描述
此代码中的 preg_replcae 来自该站点上的另一个答案,并且应该用任何内容替换所有跨度及其内容,即删除所有跨度及其内容。但是,为什么它不起作用?
$string = <<<STR
<span>Span 1</span>
<div>DIV 1</div><div class="text">DIV 2</div>
<span> Span 2 </span>
<div class="apache">DIV 3</div>
<span>
Span 3
</span>
<span>
Span 4
</span>
STR;
$string = preg_replace("/<span[^>]+\>/is","",$string);
echo $string;
我希望得到的最终结果是:
<div>DIV 1</div><div class="text">DIV 2</div>
<div class="apache">DIV 3</div>
// no spans and their content
// everything else remains
解决方案
[^>]+
匹配一个或多个字符,所以<span>
不会匹配。改用*
那里。然后,因为您要匹配两者之间的所有内容,所以让我们匹配所有内容 ( .*?
),然后是</span>
结束标记。/<span[^>]*>.*?<\/span>/is
成为我们最终的正则表达式。
<?php
$string = <<<STR
<span>Span 1</span>
<div>DIV 1</div><div class="text">DIV 2</div>
<span> Span 2 </span>
<div class="apache">DIV 3</div>
<span>
Span 3
</span>
<span>
Span 4
</span>
STR;
$string = preg_replace("/<span[^>]*>.*?<\/span>/is","",$string);
echo $string;
你可以在这里看到输出:https ://3v4l.org/X9C53
推荐阅读
- mysql - mysql 8.0 上的选择性能问题
- reactjs - 如何为一组用户部署部署在 Docker 和 GCP 上的 React webapp
- erlang - 在 ejabberd 中读取和格式化消息节
- python - 如何在apache中指定python文件的路径
- android - Mpandroidchart AxisValueFormatter:我面临 X 轴标签和标记的问题,X 轴最后一个值没有显示并且标记放错了位置
- java - 从帮助类调用 DatePicker 到 android 活动
- typescript - 更窄的类型不能分配给其他
- java - Spring Boot 中的多线程 cron 作业
- wso2 - 我可以将多个 WSO2 API 管理器(AM)与单个 WSO2 身份服务器(IS)链接吗?
- forms - Symfony 营业时间表格