我想问一下如何删除括号后面引号内的内容?
例如,我有一个字符串:
$ text ='我有一只狗。我的狗很可爱。 “我有一只猫”。我的猫很懒。 “我有一只鸟”(我说)。来我的家! “你确定?”我说 “是的,当然”(2009)';
我想要这样的结果:
我有一只狗。我的狗是治愈的。 “我有一只猫”。我的猫很懒。来到 我家! “你确定?”我说。
我已经创建了这个正则表达式:
$return_value = preg_replace('/ "[^"]+"+ \([^\(]+\) /', ' ', $text);
但是结果只是在开头的句子中,而不是所有的句子。
有人知道要解决这个问题吗?
答案 0 :(得分:1)
输入:
我有一只狗。我的狗很可爱。 “我有一只猫”。我的猫很懒。 “我有一只鸟”(我说)。来我的家! “你确定?”我说“是的,当然”(2009)。
使用:
/ "[^"]+" \([^()]+\)(?:\.(?!\s*$))?/
你得到:
我有一只狗。我的狗很可爱。 “我有一只猫”。我的猫很懒。来我的家! “你确定?”我说。
你的正则表达式\)
后面有一个空格,阻止了匹配。我使用了(?:\.(?!\s*$))?
,这意味着只有当它不在字符串末尾时匹配一个点。
答案 1 :(得分:1)
尝试:
echo preg_replace('/"[^"]*"\s*\([^)]*\)\.?/', '', $text);