在我开始之前,我知道这是CSV,我知道有一个函数存在内置PHP。 我得到了以下的模式:正则表达式返回预期结果加另一行上的换行符
preg_match_all("/([^\"]|\"[^\"]*\")*?(r\n|\n\r|\r|\n)/i", $CSV, $Matches);
谁来解析这样的事情:如果我尝试添加
[2] => Array
(
)
[3] => Array
(
[0] => CAN
[1] => *
[2] =>
[3] =>
[4] =>
[5] => 10000.0000
[6] => 19999.0000
[7] => 35.5000
)
[4] => Array
(
)
[5] => Array
(
[0] => CAN
[1] => *
[2] =>
[3] =>
[4] =>
[5] => 0.0000
[6] => 4999.0000
[7] => 19.7500
)
[6] => Array
(
)
:
Country,Region/State,City,"Zip/Postal Code\n From","Zip/Postal Code To","Weight From","Weight To","Shipping Price","Delivery Type"\n\r
CAN,*,,,,0.0000,4999.0000,29.7500,Priority\n\r
CAN,*,,,,10000.0000,19999.0000,35.5000,Express\n\r
CAN,*,,,,0.0000,4999.0000,19.7500,Express\n\r
CAN,*,,,,20000.0000,99999999.9999,59.0000,Priority\n\r
CAN,*,,,,5000.0000,9999.0000,34.7500,Priority\n\r
CAN,*,,,,20000.0000,99999999.9999,41.5000,Express\n\r
CAN,*,,,,5000.0000,9999.0000,24.4500,Express\n\r
CAN,*,,,,10000.0000,19999.0000,48.0000,Priority\n\r
CAN,*,,,,10000.0000,19999.0000,29.7500,Standard\n\r
CAN,*,,,,20000.0000,99999999.9999,36.5000,Standard\n\r
CAN,*,,,,500.0000,9999.0000,20.3500,Standard\n\r
CAN,*,,,,90.0000,499.0000,9.7500,Standard\n\r
CAN,*,,,,50.0000,89.0000,1.8000,Standard\n\r
CAN,*,,,,30.0000,49.0000,1.5000,Standard\n\r
CAN,*,,,,0.0000,29.0000,1.0000,Standard\n\r
USA,*,,,,20000.0000,99999999.9999,160.0000,Express\n\r
USA,*,,,,10000.0000,14999.0000,76.0000,Express\n\r
USA,*,,,,1000.0000,4999.0000,42.0000,Express\n\r
USA,*,,,,15000.0000,19999.0000,155.0000,Priority\n\r
USA,*,,,,5000.0000,9999.0000,94.0000,Priority\n\r
USA,*,,,,0.0000,999.0000,75.5000,Priority\n\r
USA,*,,,,15000.0000,19999.0000,98.0000,Express\n\r
USA,*,,,,5000.0000,9999.0000,61.5000,Express\n\r
USA,*,,,,0.0000,999.0000,40.0000,Express\n\r
USA,*,,,,20000.0000,99999999.9999,230.0000,Priority\n\r
USA,*,,,,10000.0000,14999.0000,120.0000,Priority\n\r
USA,*,,,,1000.0000,4999.0000,61.5000,Priority\n\r
USA,*,,,,500.0000,999.0000,25.5000,Standard\n\r
USA,*,,,,90.0000,499.0000,13.3500,Standard\n\r
USA,*,,,,50.0000,89.0000,3.0000,Standard\n\r
USA,*,,,,30.0000,49.0000,1.8000,Standard\n\r
USA,*,,,,0.0000,29.0000,1.5000,Standard\n\r
我得到的resulst类似于?:
在换行符组中仍然有效。任何人都可以帮助我,我卡在那里。谢谢。
如果你知道,为什么不使用它? – OrangeDog 2012-07-25 20:03:11
什么奇怪的换行符是?我从来没有见过'\ n \ r'。还有(可能与之有关?)你的正则表达式在'r'之前缺少一个反斜杠。 – 2012-07-25 20:06:31
@TimPietzcker Oups,我添加了反斜杠。感谢您的注意。 '\ n \ r'只是一种可能发生的可能性。我让我的课程适合初学者。还要补充一点,在每个字符(而不是正则表达式)上生成子数组需要通过分隔符(,)来提取所有内容,而不是在双引号之间。 – 2012-07-25 20:08:59