按模式删除部分字符串

我有一个字符串。我需要删除render_dynamic_content(,留下文本,然后)从字符串中删除 next 。模式内的文本可以不同。
例子:

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


湖上湖
浏览 165回答 1
1回答

慕哥6287543

您已经接近了,但是您需要在您的模式中包含(并转义)括号,然后将捕获的部分(您要保留的部分)放在替换中而不是空字符串中。$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;注意:某些其他模式可能更有效,也可能无效。出于这个答案的目的,我不打算尝试优化它。
打开App,查看更多内容
随时随地看视频慕课网APP