2014-07-26 50 views
3

比方说,我有一个字符串“1,000,786”。我希望将其转换为“1000786”。我知道preg_replace的第一部分应该是“[0-9],[0-9]”,但我不明白如何将数字值返回到preg_replace的'replace with'部分。谢谢。使用php,我将如何用[0-9] [0-9]替换[0-9],[0-9]?

编辑:对不起,我忘了提及它不像删除逗号一样简单,因为可能包含字母字符。只有逗号介于2个数字之间时,我是否希望它消失。

例如:“Apple,Banana 1,746”将是“Apple,Banana 1746”。

+0

你不需要正式的表达除非是练习,否则就像'''一样,除去一个固定的字符(http://php.net/str_replace)。 –

+0

你说_it不是那么简单,只是删除comma_。你能举一个例子吗?它不仅仅像删除逗号一样简单?你刚刚删除逗号的例子不是吗? – putvande

+0

如果你看看苹果和香蕉之间的逗号依然存在的例子。 – user1413341

回答

6

下面的正则表达式将删除逗号只有当它的前面加上一个数字,它必须遵循由一个数字。

(?<=\d),(?=\d) 

替换字符串:

Empty string 

DEMO

您的代码将是

<?php 
$string = '1,000,786'; 
$pattern = "~(?<=\d),(?=\d)~"; 
$replacement = ""; 
echo preg_replace($pattern, $replacement, $string); 
?> //=> 1000786 

OR

<?php 
$string = 'Apple, Banana 1,746'; 
$pattern = "~(?<=\d),(?=\d)~"; 
$replacement = ""; 
echo preg_replace($pattern, $replacement, $string); 
?> //=> Apple, Banana 1746 
+0

为什么downvote? –

2

您不必使用正则表达式为,调用str_replace()函数就足够了:

$s = str_replace(",", "", "1,000,786"); 
1

对于处理也文本之前,请考虑下面的代码:

$text = 'Apple, Banana, 1,746'; 
preg_match('/[0-9]+,[0-9]+/', $text, $matches); 
$text = str_replace($matches[0], str_replace(',', '', $matches[0]), $text); 
相关问题