昨天遇到一个任务,需要解析一段csv格式的字符串,实际上是将android上的通讯录导出后得到的串。因为是直接从数据库提取出来,不像在文件中,你可以通过读文件的方式进行字符串分割。而且比较恶心的是,在网页上,这种字符串看起来并没有换行,完全是糅合在了一块的。
想了很多办法:
1.用js截取的办法,对js本身就不是很熟悉,试了一会就作罢了。
2.观察后用标志性字符分割字符串的办法。但是很可惜,几乎没有可以通用的标志性分割符号。所以在试了很久后作罢了。
最后,解决办法是:很无语的原来就是一个在html里面看不见的标记,\n,就可以解决了。
因为这种格式的串在文本里面换行都是通过\n来换行的。但是在html展示出来的时候是不起作用的,效果就是,在html源文件中,这些记录是换行的,但是在浏览器里面,就没有换行。所以才导致我走了很多弯路,悲哉。其实还是用的分割字符串的思路。
最后的解决办法是:
调用php的分割函数。String Array = explode("\n", String);这样子就按行存到数组中去了,然后再进一步解析各列,这个就好弄的多了。
我的解析函数:
另外一个是将二位数组转换回csv字符串:
想了很多办法:
1.用js截取的办法,对js本身就不是很熟悉,试了一会就作罢了。
2.观察后用标志性字符分割字符串的办法。但是很可惜,几乎没有可以通用的标志性分割符号。所以在试了很久后作罢了。
最后,解决办法是:很无语的原来就是一个在html里面看不见的标记,\n,就可以解决了。
因为这种格式的串在文本里面换行都是通过\n来换行的。但是在html展示出来的时候是不起作用的,效果就是,在html源文件中,这些记录是换行的,但是在浏览器里面,就没有换行。所以才导致我走了很多弯路,悲哉。其实还是用的分割字符串的思路。
最后的解决办法是:
调用php的分割函数。String Array = explode("\n", String);这样子就按行存到数组中去了,然后再进一步解析各列,这个就好弄的多了。
我的解析函数:
/** *处理csv字符串,返回按照行列的二维数组。 * */ function processCsv($contacts) { $contacts = explode("n", $contacts); $count= count($contacts);//统计csv串行数目 $showString=array(array());//传递到view包含html的字符串 $i=0; while($i<$count-1) { $csvString = explode(",",$contacts[$i]); //这个是为了去掉每一行最后一个 n 符号,故意舍去最后一个 unset($csvString[35]); $showString[$i]=$csvString; $i++; } return $showString; } |
另外一个是将二位数组转换回csv字符串:
| /** *根据传入的二位数组构造csv格式的字符串 *$conn 为数据库链接 */ function buildCsv($arrayString) { $csvString=''; foreach($arrayString as $line) { foreach ($line as $row) $csvString=$csvString.$row.','; $csvString.="\n"; } return $csvString; } |
如果您觉得本文对您有帮助和您对此有兴
趣,你可以在这里
留下您的脚
印和痕迹。谢谢^ ^!



PHP中的一些常量以及获取当前
linux下很有用很简约的编码

