2014-09-10 83 views
0

第一数量我想分裂像这样的字符串:分割的字符串通过在PHP

Mystreetway 123, 1.th 

所以,我可以具有以下输出数组:

0 => Mystreetway 
1 => 123, 1.th 

=因此,它按照找到的第一个整数对字符串进行分割,然后将这个和所有内容放入第二个分割中。

我曾尝试以下解决方案发现:

$key= "Mystreetway 123, 1.th"; 
$pattern = "/(\d+)/"; 

$array = preg_split($pattern, $key, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); 
print_r($array); 

但它返回下列信息:

[0] => Mystreetway [1] => 123 [2] => , [3] => 1 [4] => .th 

回答

5

拆分与先行模式,而不是(这样你就不必兼顾拍摄的分隔符) ,然后将组数限制为仅两个(第三参数为preg_split

$key= "Mystreetway 123, 1.th"; 
$pattern = '/(?=\d)/'; 

$array = preg_split($pattern, $key, 2); 
print_r($array); 
2

使用前向断言一个数字之前来匹配零宽度(空)的表达:

/(?=\d)/ 
2

你要找的参数是limit。将您的第三个参数从-1(意思是根据需要多次拆分)更改为1(意思是只拆分一次),并将该字符串拆分为第一个整数。

$key= "Mystreetway 123, 1.th"; 
$pattern = "/(\d+)/"; 

$array = preg_split($pattern, $key, 1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); 
print_r($array); 

编辑:对于你的情况,这实际上并不工作,但如果我们改变你的正则表达式稍微它作为期望的;

$key= "Mystreetway 123, 1.th"; 
$pattern = "/(\d.*)/"; // Note we're now looking for a digit followed by anything 

$array = preg_split($pattern, $key, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); 
print_r($array); 

输出:

Array 
(
    [0] => Mystreetway 
    [1] => 123, 1.th 
)