Guest User

Untitled

a guest
Jul 17th, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.43 KB | None | 0 0
  1. <?php
  2. define('FSTA', 'FSTA');
  3. define('FEND', 'FEND');
  4. define('FVAL', 'FVAL');
  5. define('FESC', 'FESC');
  6. define('FQUO', 'FQUO');
  7.  
  8. function parse_csv_row($row) {
  9. $row = trim($row);
  10. $vs = array();
  11. $b = '';
  12. $st = FSTA;
  13. for($i=0; $i<strlen($row); $i++) {
  14. $c = $row[$i];
  15. switch($st) {
  16. case FSTA:
  17. switch($c) {
  18. case '"':
  19. $st = FQUO;
  20. break;
  21. case ',':
  22. $vs[] = '';
  23. break;
  24. default:
  25. $b .= $c;
  26. $st = FVAL;
  27. break;
  28. }
  29. break;
  30. case FQUO:
  31. switch($c) {
  32. case '"':
  33. $st = FEND;
  34. break;
  35. case '\\':
  36. $st = FESC;
  37. break;
  38. default:
  39. $b .= $c;
  40. break;
  41. }
  42. break;
  43. case FVAL:
  44. switch($c) {
  45. case ',':
  46. $vs[] = $b;
  47. $b = '';
  48. $st = FSTA;
  49. break;
  50. default:
  51. $b .= $c;
  52. break;
  53. }
  54. break;
  55. case FESC:
  56. switch($c) {
  57. case '"':
  58. $b .= $c;
  59. break;
  60. default:
  61. $b .= '\\';
  62. $b .= $c;
  63. break;
  64. }
  65. break;
  66. case FEND:
  67. switch($c) {
  68. case ',':
  69. $vs[] = $b;
  70. $b = '';
  71. $st = FSTA;
  72. break;
  73. default:
  74. break;
  75. }
  76. break;
  77. default:
  78. break;
  79. }
  80. }
  81. if($b) $vs[] = $b;
  82. return $vs;
  83. }
  84.  
  85. function make_csv_row($arr, $delim=',', $encap='"') {
  86. $csv_arr = array();
  87. foreach($arr as $i => $s) {
  88. if($encap) $s = str_replace($encap, '\\'.$encap, $s);
  89. $csv_arr[] = (string)$s == '' ? '' : $encap.$s.$encap;
  90. }
  91. return implode($delim, $csv_arr);
  92. }
Add Comment
Please, Sign In to add comment