2016-07-14 63 views
-3

我需要拆分这个(PHP)工作功能拆分PHP不给定模式

$var = XXXXXX31,72YYYYYY32,73DDDDDD33,74 

导致

[0] => XXXXXX31,72 
[1] => YYYYYY32,73 
[2] => DDDDDD33,74 

我使用的功能使preg_split

与模式('/(?=[a-z]+)(?<=[0-9])/i',$var);

但它回来了

[0] => 31,72 
[1] => XXXXXX32,73 
[2] => YYYYYY33,74 
[3] => DDDDDD 
+0

您的输入没有按不符合您的预期产出(或实际产出)。请分享实际的运行代码。 – smarx

+0

什么是分割规则?看来你需要将它分成固定大小的块。如果这是真的,那么['str_split()'](http://php.net/manual/en/function.str-split.php)是你需要的函数。 – axiac

+0

我解决了我的问题,请再读一遍。 – user1629045

回答

0

我已经假设你真的想要分割字符串。如果这不是你想要的,你必须告诉我们你的实际意图是什么样的行为。

$input = "TIPO DISCRIMINAÇÃO PRAZO VALOR1.923,11VENCIMENTO BASICORENDIMENTOS230,77ANUENIO - ART.244, LEI 8112/900013.596,99GRATIFICACAO NATALINA93,65FGR-FUNC GRATIFICADA L 8216/91155,46GRAT.DESEMP.FUNCAO-GADF LD.13368,58AUXILIO-TRANSPORTE955,20GDPGPE - LEI 11.784/2008 AT238,80GDPGPE - LEI 11.784/2008 AT0011.568,44ADIANT.GRATIF.NATALINA/ATIVO123,45"; 
$matches = []; 

preg_match_all("/.*?[\\d.]+,\\d{2}/", $input, $matches); 

print_r($matches[0]); 

// Output: 
// Array 
// (
//  [0] => TIPO DISCRIMINAÇÃO PRAZO VALOR1.923,11 
//  [1] => VENCIMENTO BASICORENDIMENTOS230,77 
//  [2] => ANUENIO - ART.244, LEI 8112/900013.596,99 
//  [3] => GRATIFICACAO NATALINA93,65 
//  [4] => FGR-FUNC GRATIFICADA L 8216/91155,46 
//  [5] => GRAT.DESEMP.FUNCAO-GADF LD.13368,58 
//  [6] => AUXILIO-TRANSPORTE955,20 
//  [7] => GDPGPE - LEI 11.784/2008 AT238,80 
//  [8] => GDPGPE - LEI 11.784/2008 AT0011.568,44 
//  [9] => ADIANT.GRATIF.NATALINA/ATIVO123,45 
//) 
+0

不工作...请帮我分开这个字符串[0] => XXXXXX1.923,11YYYYY230,77为1.923, 11YYYYYY – user1629045

+0

它*做*工作...我刚刚跑它。如果它没有按照你想要的实际数据进行,你*真的需要告诉我们你正在使用的数据和你期望的输出结果。 – smarx

+0

将此字符串[0] => XXXXXX1.923,11YYYYYY230,77分隔为1.923,11YYYYYY – user1629045

0

在这里你去试试这个+有一个在您输入一个错字,我想你的意思是有6分X的,而不是5

$var = 'XXXXX31,77YYYYYY32,77DDDDDD33,77'; 
$array = explode('77',$var); 
$array = array_filter($array); // remove empty elements 

for ($i = 0; $i < count($array); $i++) 
{ 
    $array[$i] .= '77'; 
} 
echo "<pre>"; 
print_r($array); 
echo "</pre>"; 

输出

Array 
(
    [0] => XXXXX31,77 
    [1] => YYYYYY32,77 
    [2] => DDDDDD33,77 
) 
+0

很难知道,因为原始问题没有指定目标,但我的猜测是,当输入为“XXXXXX76,77YYYYYY77,77”时,这会产生错误的输出。 '。 – smarx

+0

aha你是对的它没有完全的功能,但让我们听到他的声音 –

+0

77 variate对不起。; ...这是一个值,每次在逗号后改变 – user1629045