【发布时间】:2017-01-03 16:59:20
【问题描述】:
我在实用程序类上创建了一个通用函数,它将逗号分隔的字符串转换为数组。该函数有一个关于修剪内容的可选参数,但默认修剪空格和引号(单引号和双引号)。
public function convertToArray($string, $trim = " '\"") {
$split = array();
if(!empty($string)) {
$split = str_getcsv($string, ",");
if(!empty($trim)) {
$split = array_map(function($split) use ($trim) {
return trim($split, $trim);
}, $split);
}
}
echo var_dump($string);
echo var_dump($trim);
echo var_dump($split);
return $split;
}
在一个单独的文件上,我这样称呼它(我只想修剪空格并保持引号不变):
$utility->convertToArray($keywords, " ");
3var_dump 的输出如下:
$字符串
string(21) "Finance, "Accounting""
$修剪
string(1) " "
$拆分
array(2) {
[0]=>
string(7) "Finance"
[1]=>
string(10) "Accounting"
}
我希望得到string(12) ""Accounting"",但不知何故,双引号被修剪了。该函数适用于单引号,但因为我得到string(12) "'Accounting'"。
附加信息
我使用 str_getcsv 是因为这些值中可能包含逗号并且不应拆分。
【问题讨论】:
-
出于好奇:为什么不使用
explode,而不是$split = str_getcsv($string, ",");? -
你看过 str_getcsv 是做什么的吗?因为 csv 可以在其中包含不属于数据的引号。
-
$split = str_getcsv($string, ",");是默认修剪双引号 -
好的,感谢您指出这一点!最初我使用的是
explode,但由于我忘记的原因,我不得不将其更改为str_getcsv。最终我的要求发生了变化,我忘记将其恢复为explode。这是我的相关问题stackoverflow.com/questions/41286693/… -
@yivi 你是对的。事实上,我们根本不知道规格:)
标签: php string csv trim double-quotes