我知道这可能是一个简单的问题,以前肯定有人回答过,但这是一个你不知道如何用谷歌搜索的问题。
我在做一个内联网,我有一个很大的texarea,用户在excel中粘贴一个5列X 365行(可选的第一列有1到365个数字),结果是:
1 $ 37 $ 74 $ 111 $ 148 $ 185
2 $ 37 $ 74 $ 111 $ 148 $ 185
3 $ 37 $ 74 $ 111 $ 148 $ 185
4 $ 37 $ 74 $ 111 $ 148 $ 185
5 $ 37 $ 74 $ 111 $ 148 $ 185
6 $ 57 $ 114 $ 171 $ 228 $ 285
7 $ 57 $ 114 $ 171 $ 228 $ 285
8 $ 57 $ 114 $ 171 $ 228 $ 285
9 $ 57 $ 114 $ 171 $ 228 $ 285
10 $ 57 $ 114 $ 171 $ 228 $ 285
如何将其转换为php数组,以便将其插入到mysql表中?
我想使用explode(),但我不确定每列之间的空间是否总是相同的,也许有一种更奇特的方法可以做到这一点。
如果这件事已经在别的地方讨论过了,请告诉我。
谢谢
最佳答案
每一列展开'\n'
,然后每列展开'\t'
,忽略$
<?php
$str = " 1 $ 37 $ 74 $ 111 $ 148 $ 185
2 $ 37 $ 74 $ 111 $ 148 $ 185
3 $ 37 $ 74 $ 111 $ 148 $ 185
4 $ 37 $ 74 $ 111 $ 148 $ 185
5 $ 37 $ 74 $ 111 $ 148 $ 185
6 $ 57 $ 114 $ 171 $ 228 $ 285
7 $ 57 $ 114 $ 171 $ 228 $ 285
8 $ 57 $ 114 $ 171 $ 228 $ 285
9 $ 57 $ 114 $ 171 $ 228 $ 285
10 $ 57 $ 114 $ 171 $ 228 $ 285";
$arrayCode = array();
$rows = explode("\n", $str);
foreach($rows as $idx => $row)
{
$row = explode( "\t", $row );
//to get rid of first item (the number)
//comment it if you don't need.
array_shift ( $row );
foreach( $row as $field )
{
//to clean up $ sign
$field = trim( $field, "$ ");
$arrayCode[$idx][] = $field;
}
}
print_r( $arrayCode );
?>