2012-07-22 60 views
2

我希望用空字符串替换变量$key的第12个位置中的任何数字字符:$key变量具有12个字符+增加的数字字符。例如:ereg_replace或preg_replace函数

IODN4YFK5XKV1 
GYDN4YFK5XKV2 
P3FU4YFK5XKV3 

贝娄是我当前的PHP代码行:

$data = ereg_replace("[0-9]+$", "", $_REQUEST['code']); 

问题:如果我$key = HXGE1SR9OWM428,最后3个位数(428)将被删除,但我会喜欢只删除数字从第12位开始,这样我的结果将是$data = HXGE1SR9OWM4

+1

ereg_ *是depracted – 2012-07-22 01:47:28

+0

他没有说它必须与ereg_ *:P – Vatev 2012-07-22 01:49:52

+0

你需要只替换后面的第12个字符或一切吗? – Vatev 2012-07-22 01:56:06

回答

2

为什么不使用substr()? *我使用的preg_replace来代替:

$data = substr($_REQUEST['code'], 0, 12); 

仅供参考,ereg_*在PHP

的较新版本
+0

这是唯一正确的答案。 – FtDRbwLXw6 2012-07-22 02:00:51

+0

哇,你甚至读过这个问题吗? “我想用一个空字符串替换变量$ key的第12个位置中的任何”数字“字符”您的代码将在第12个位置后放下任何东西。 – mask8 2012-07-22 02:04:27

+0

@ mask8,是的,他没有说他只是在数字时才会替换它。他说第12个字符是数字。他还表示他想替换它。不是一回事。 – 2012-07-22 02:05:53

0

你可以这样做已被弃用。

$data = preg_replace("/^([\w]{12})[0-9]+$/", "$1", $_REQUEST['code']); 
+0

不是'\ w \ d'多余的?我相信'\ w'包含数字。因此,以下模式应该做得很好:'/ ^(\ w {12})\ d + $ /' – Geo 2012-12-21 20:11:33

+0

@geo right!谢谢指出。 – mask8 2012-12-26 20:29:28

0

使用过时ereg_*如你的问题,你会怎么做:

$data = ereg_replace('^([A-Z0-9]{12})[0-9]+', '\1', $_REQUEST['code']); 

如果小写字母需要被列入模式,只需更改ereg_replaceeregi_replace

然而,更好的办法是使用preg_*功能组,而不是:

$data = preg_replace('/^(\w{12})\d+$/', '$1', $_REQUEST['code']); 

再次,小写字母,只是在图案的末尾添加i,所以它的'/^(\w{12})\d+$/i'