2011-05-26 62 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]; 
相關問題