BrettCarr Posted March 14, 2010 Share Posted March 14, 2010 I want to put "],[" every thirteen commas with a regular expression Im trying this is the string $teststring = "2010-03-14,74527,645,New,7417417,Toll,2,74527417,32,202,7452741741,ghtgbwt,gtgwtgwtfgwtrg,2010-03-14,857527527,645,New,7417418,Toll,7,74527418,32,202,527527,hjm,djmdmdjmdjmdgjm,2010-03-14,85285,645,New,7417419,Toll,2,74527419,32,202,750757,jryjkryjkfryk,yjmyjyjtyjhm"; The first preg_replace puts commas around my strings The next one is where im trying to put square brackets every 13 commas <?php $teststring = "2010-03-14,74527,645,New,7417417,Toll,2,74527417,32,202,7452741741,ghtgbwt,gtgwtgwtfgwtrg,2010-03-14,857527527,645,New,7417418,Toll,7,74527418,32,202,527527,hjm,djmdmdjmdjmdgjm,2010-03-14,85285,645,New,7417419,Toll,2,74527419,32,202,750757,jryjkryjkfryk,yjmyjyjtyjhm"; $teststring1 = preg_replace("/([a-zA-Z0-9_\-]+?),/" , "\"$1\",",$teststring); $teststring2 = preg_replace("/\,{13}/" , "],[",$teststring1); var_dump($teststring2); ?> Quote Link to comment Share on other sites More sharing options...
cags Posted March 15, 2010 Share Posted March 15, 2010 I'm not convinced using Regex is the best method to edit a CSV file (which is what you appear to be working with), but something like this perhaps... $pattern = '#(?:[^,]*,){12}[^,]*#'; $replacement = '$0],['; Disclaimer: That's completely untested. Quote Link to comment Share on other sites More sharing options...
sasa Posted March 17, 2010 Share Posted March 17, 2010 try <?php $teststring = "2010-03-14,74527,645,New,7417417,Toll,2,74527417,32,202,7452741741,ghtgbwt,gtgwtgwtfgwtrg,2010-03-14,857527527,645,New,7417418,Toll,7,74527418,32,202,527527,hjm,djmdmdjmdjmdgjm,2010-03-14,85285,645,New,7417419,Toll,2,74527419,32,202,750757,jryjkryjkfryk,yjmyjyjtyjhm"; //$teststring1 = preg_replace("/([a-zA-Z0-9_\-]+?),/" , "\"$1\",",$teststring); //$teststring2 = preg_replace("/\,{13}/" , "],[",$teststring1); $a = array_chunk(explode(',',$teststring),13); foreach ($a as $k => $b) $a[$k] = '"'.implode('","', $b).'"'; $teststring2 = implode('],[',$a); var_dump($teststring2); ?> Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.