我知道这可能是一个简单的问题,以前肯定有人回答过,但这是一个你不知道如何用谷歌搜索的问题。
我在做一个内联网,我有一个很大的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 );
?>

10-08 02:49
查看更多