使用正则表达式删除PHP中的数字格式的问题

时间:2011-09-25 13:40:52

标签: php regex preg-replace

我在PHP中使用正则表达式时遇到此问题,我似乎无法破解。我花了几个小时寻找如何让它发挥作用,但似乎没有任何效果。

我的文件包含与下面类似的行:

Total','"127','004"','"118','116"','"129','754"','"126','184"','"129','778"','"128','341"','"127','477"','0','0','0','0','0','0

这些行被插入到INSERT查询中。问题是像“127”,“004”这样的值实际上应该是 127,004 ,或者没有任何格式: 127004 。后者是我需要插入数据库表的实际值,所以我想我会使用preg_replace()来检测“127','004”等值,并用替换它们127004

我和一个正则表达式设计师一起玩,发现我可以使用以下内容来获得我想要的结果:

正则表达式

"(\d+)','(\d{3})"

替换表达

$1$2

这篇文章顶部的这一行最终会像这样结束:(这就是我所追求的)

Total','127004','118116','129754','126184','129778','128341','127477','0','0','0','0','0','0

然而,这在PHP中不起作用。什么都没有被取代。

我使用的代码是:

$line = preg_replace("\"(\d+)','(\d{3})\"", '$1$2', $line);

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:0)

你的正则表达式中没有分隔符。需要分隔符才能让PHP知道要匹配的模式是什么,以及什么是模式修饰符(例如i - 不区分大小写,U - ungreedy,...)。使用模式中没有出现的字符,通常会看到使用斜杠'/'。

试试这个:

$line = preg_replace("/\"(\d+)','(\d{3})\"/", '$1$2', $line);

答案 1 :(得分:0)

您忘记用正斜面包装正则表达式。试试这个:

"/\"(\d+)','(\d{3})\"/"

答案 2 :(得分:0)

使用preg_replace("#\"(\d+)','(\d+)\"#", '$1$2', $s);而不是你的