2011-05-26 45 views
0

我有一个是卖给多个客户一个产品,每个客户都有从我​​原来的产品代码如衍生了自己独特的产品代码获取标点符号分隔字符串中使用PHP

我的代码:1245年至1265年

客户1:1245至1265年

客户2:1245.65

我的问题:是否有任何的方法来分析这样的字符串,找到什么是分离的整数?我的目标是设置一个设置页面,在其中输入演示客户代码,然后从该示例代码中派生所有产品代码。我相信PHP可以处理这个!

EXTRA INFO:

对不起,我还没有给与足够的信息。可能存在分隔符是字母数量的情况,例如1245ABC65。我讨厌更新这样的问题时,很多人都给予有效的答案:(我的错。

+0

所以,只是为了确认,从字符串除去数字就足以给你你想要的数据?如果是这样,'$ separator = preg_replace(“/ \ d + /”,“”,$ input);'应该看到你。 – 2011-05-26 08:58:57

+0

有了这个“新信息”,只有@Jeff Parker的解决方案和我的答案正常工作。 – doctore 2011-05-26 09:30:59

回答

0

其他字符不是数字。您可能需要使用preg_match_all

preg_match_all('/[^0-9]/', '1245-95', $matches); 
print_r($matches); 

//Array ([0] => Array ([0] => -)) in the example 
寻找非数字字符

与更新的问题,你必须写:

$str = '1245ABC65'; 
preg_match("/\d+([^0-9]+)\d+/", $str, $separator); 
echo $separator = $separator[1]; 

preg_match_all('/[^0-9]+/', '1245ABC95', $matches); 
print_r($matches); 

//Array ([0] => Array ([0] => 'ABC')) in the example 
+0

感谢您的回答,您能否解释第一个和第二个答案之间的区别,在第二个答案中如何处理字母字符?我需要看这个... – Alex 2011-05-27 09:37:53

2

您可以使用正则表达式找到的分隔符。

$str = '1245/65'; 
preg_match("/\d+(.)\d+/", $str, $separator); 
$separator = $separator[1]; 
+0

是的,比我的解决方案更好 – 2011-05-26 09:08:23

+0

感谢您的回答,迄今为止最好,但是我没有提供足够的信息,问题现在已更新。 – Alex 2011-05-26 09:23:34

+0

@Alex根据此解决方案添加了您的答案 – 2011-05-26 12:30:23

0

使用preg_split和正则表达式,搜索对于

$separador = preg_split ('/\d/', '1234/65', -1, PREG_SPLIT_NO_EMPTY) 
$separador = $separador[0]; 
相关问题