我希望将逗号分隔的值字符串解析为数组。我想试试str_getcsv()的php函数,但我找不到任何关于如何使用它的好例子。
例如,我有一个输入,其中用户提交编程语言(php、js、jquery等)的标签,就像提交问题时stackoverflow中的“tag”输入一样。
如何使用str_getcsv将示例value="php, js, jquery"的输入转换为数组?
发布于 2011-05-30 01:32:55
诚然,http://us3.php.net/manual/en/function.str-getcsv.php的规范没有包括标准示例,但用户提交的说明很好地涵盖了这一点。如果这是表单输入:
$val = $_POST['value'];
$data = str_getcsv($val);$data现在是一个具有值的数组。试一试,看看你是否还有其他问题。
发布于 2011-05-30 01:34:01
我认为你也许应该看看explode来完成这个任务。
$values = "php, js, jquery";
$items = explode(",", $values);
// Would give you an array:
echo $items[0]; // would be php
echo $items[1]; // would be js
echo $items[2]; // would be jquery这可能比str_getcsv()更有效;
请注意,您需要使用trim()来删除项值之前和之后可能出现的空格。
更新:
我以前没有见过str_getcsv,但在手册页上读一下这句话,会让它看起来是一个值得的候选人:
为什么不使用
()而不是str_getcsv()来解析行?因为explode()不会正确处理字符串中可能包含的部分或转义字符。
发布于 2012-08-03 13:43:07
为了简单和可读性,我通常只使用explode(),只有在满足以下两个条件的情况下才添加str_getcsv():1)主分隔符也用在数据本身中;2)我试图用作主分隔符的标记被另一个不同的字符括起来。
例如,CSV文件的基本解析器:
$filename = $argv[1];
if (empty($filename)) { echo "Input file required\n"; exit; }
$AccountsArray = explode("\n", file_get_contents($filename));只要$AccountsArray的每个元素没有在数据本身中嵌入",“,这就可以完美地工作,并且简单易懂:
foreach ($AccountsArray as $entry) {
$acctArr = explode(",", $entry);
}然而,数据通常会包含分隔符,此时必须有一个封闭的标记(在本例中为a“)。如果是这样,那么我将切换到str_getcsv(),如下所示:
foreach ($AccountsArray as $entry) {
$acctArr = str_getcsv($entry, ",", "\"");
}https://stackoverflow.com/questions/6169235
复制相似问题