2012-02-20 134 views
3

我的脑袋正在转动,我试图自己做,但无法弄清楚。所以我再次转向你们的知识。删除除最后一个以外的逗号w preg_replace

这些都是我可能我的琴弦:

My head is spinning with, pregreplace 
My head is spinning, with, pregreplace 
My head is, spinning, with, pregreplace 
My head, is, spinning, with, pregreplace 

(在上面的字符串注意逗号)

我想拥有所有的“浸渍料,替换为” /“字符串替换为”只有一个逗号末(就像显示在第一示例)

我的头与纺纱,pregreplace

预先感谢;)

+3

'strrpos','substr','str_replace',这就是全部。 – 2012-02-20 22:37:46

+0

这两个都很好,我会在接下来的10分钟内选择答案,我注意到我的数据,我也有多条线,就像这样:我的头旋转着,pregreplace(射击我不能编辑它在这里有多行......但基本上也需要使用同一个脚本来完成单行。 – Ossi 2012-02-20 23:06:30

回答

8

您可以使用“正期待”这样的:

,(?=.*,)

先行在括号中的一部分。它基本上说,“只有当有字符串中的另一个逗号后替换此逗号

的代码是这样的:

echo preg_replace('/,(?=.*,)/', '', $str); 

我测试了与使用RegexBuddy,以确认它的工作原理:

enter image description here

+1

你在第一个''preg_replace''参数中缺少模式分隔符。或者这些日子他们是否可选?我在这里展示我的年龄?否则,+1。 – 2012-02-20 22:47:24

+0

@justsomebody好的,赶上!我已经更新了我的答案。 – 2012-02-20 22:48:45

+0

感谢您的回答和解释;) – Ossi 2012-02-20 23:19:05

4
preg_replace('/,/', '', $my_string, preg_match_all('/,/', $my_string) - 1); 

以上应该做你所需要的。

+0

在这种情况下'strrpos'会比'preg_match_all'更有效吗? – 2012-02-20 22:54:44

+0

希望我可以给2个答案学分...无论如何,我给你一个凹凸...谢谢 – Ossi 2012-02-20 23:18:43

+1

@ ColinO'Dell是的,我最初编写的解决方案使用字符串函数,但由于请求是专门为使用preg_replace我提供解。 – 2012-02-21 14:24:25