我无法让fgetcsv()
使用$_POST
( delimiter = (string)$_POST['delimiter'];)
如果我指定:$delimiter = "\t";
但不是在我使用时:$delimiter = (string)$_POST['delimiter'];
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>
答案 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);
很晚,但希望它可以帮助某人对这个谜团感到疯狂。