fgetcsv()不使用$ _POST中的变量$ delimiter

时间:2013-02-14 16:13:33

标签: php fgetcsv

我无法让fgetcsv()使用$_POST

中的变量
(  delimiter = (string)$_POST['delimiter'];)

如果我指定:$delimiter = "\t";

,我就会工作

但不是在我使用时:$delimiter = (string)$_POST['delimiter'];

  1. HTML

    <html>
    <body>
    <form enctype="multipart/form-data" action="upload.php" method="post">
            1) Select a delimiter.<br />
            <input type="radio" name="delimiter" value="\t"checked="yes" /> Tab<br />
            <input type="radio" name="delimiter" value=" "/> Space<br />
            <input type="radio" name="delimiter" value=","/> Comma<br />
            <input type="radio" name="delimiter" value=";"/> Semicolon<br /><br />
            <input type="hidden" name="MAX_FILE_SIZE" value="1000">
            2) Send this file: <input name="userfile" type="file"><br /><br />
            3) <input type="submit" value="Send Info">
    </form>
    <br />
    </body>
    </html>
    

3 个答案:

答案 0 :(得分:3)

已经$_POST是一个字符串。为什么(string)前需要$_POST?只需删除它。只是:

delimiter = $_POST['delimiter'];

这应该有用。


此外,您不应使用fgetcsv,因为您没有提取文件。您需要str_getcsv

str_getcsv($_POST["csv"], $_POST['delimiter']);

答案 1 :(得分:1)

为什么不这样做万无一失:

 $options = array(0=> "\t", 1 => "\n");
 $delimiter = $options[ (int) $_POST['delimiter'] ];

并使用您选项的键而不是分隔符本身。 更安全,更安全。

答案 2 :(得分:0)

我遇到了这个问题并通过以下代码解决了这个问题:

$delimiter = $_POST['delimiter'];
$delimiter = str_replace("\\t","\t",$delimiter);

很晚,但希望它可以帮助某人对这个谜团感到疯狂。