php - 按模式删除部分字符串
问题描述
我有一个字符串。我需要删除render_dynamic_content(
,留下文本,然后)
从字符串中删除下一个。图案内的文字可以不同。
例子:
some ( text {{ render_dynamic_content(dynamic_html.POS_A_IMG) }} another ) text {{ render_dynamic_content(dynamic_html.POS_B_IMG) }}
预期结果应该是:
some ( text {{ dynamic_html.POS_A_IMG }} another ) text {{ dynamic_html.POS_B_IMG }}
我正在努力:
$string = 'some ( text {{ render_dynamic_content(dynamic_html.POS_A_IMG) }} another ) text {{ render_dynamic_content(dynamic_html.POS_B_IMG) }}';
$content = preg_replace('/render_dynamic_content([\s\S]+?)/', '', $string);
结果是:
some ( text {{ dynamic_html.POS_A_IMG) }} another ) text {{ dynamic_html.POS_B_IMG) }}
我需要在)
之后dynamic_html.POS_A_IMG
删除dynamic_html.POS_B_IMG
解决方案
你很接近,但你需要在你的模式中包含(和转义)括号,然后将捕获的部分(你想要保留的部分)放入替换而不是空字符串。
$string = 'some ( text {{ render_dynamic_content(dynamic_html.POS_A_IMG) }} another ) text {{ render_dynamic_content(dynamic_html.POS_B_IMG) }}';
$content = preg_replace('/render_dynamic_content\(([\s\S]+?)\)/', '\1', $string);
echo $content;
注意:其他一些模式可能会也可能不会更有效。出于此答案的目的,我不会尝试对其进行优化。
推荐阅读
- stimulusjs - 如何获取所有子目标
- javascript - 离线时创建 React App ServiceWorker.js 重定向
- javascript - 如何在 Firebase 管理 SDK 中监视更新功能
- swift - 滚动后,我的计时器标签占用了一个新数字
- javascript - Javascript:if else 语句
- java - Spring Data 对 NamedNativeQuery (JPA-Hibernate-MySql) 进行分页和排序
- python - 张量流内存SIGABRT
- javascript - 添加到列表
使用 jQuery - r - 基于R中的小数子集数据框行?
- regex - 正则表达式拾取包含 2 个破折号的字符串