用regexp删除字符串,只留下PHP内部带有img标签的字符串


Remove string with regexp leaving only ones with img tag inside - PHP

我有一个字符串,它包含以前由WP格式化的内容,它包含少数类型的[caption]标记。例子:

[caption (attributes here)]some text[/caption]

[attribute here)]©name and姓氏[/caption]

[标题id ="attachment_49532"align ="aligncenter"宽度="530"][/标题]

我只需要删除包含©后面跟着人员姓名的那些。

我试着:

preg_replace("/'[caption(.*?)']©(.*?)'['/caption']/","",$string);

但只有当输入字符串中只有一个[caption]标签,如

时,它才会起作用
$string = "[caption (parameters here)]©name and surname[/caption]";

而不是包含更多元素的字符串

我做错了什么?

启用DOTALL修饰符,使您的正则表达式中的点也匹配换行符

preg_replace('/'[caption'b.*?']©.*?'['/caption']/su',"",$string);