php用引号爆破(101)

插入一个简单数组 看起来像这样
$array = array(\'lastname\', \'email\', \'phone\');
$comma_separated = implode(\",\", $array);
那会返回这个
 lastname,email,phone
太好了,所以我可能会这样做
$array = array(\'lastname\', \'email\', \'phone\');
$comma_separated = implode(\"\',\'\", $array);
$comma_separated = \"\'\".$comma_separated.\"\'\";
现在我有了我想要的漂亮的csv字符串
 \'lastname\',\'email\',\'phone\'
有没有更好的方法可以做到这一点,在我看来应该有一个可选的参数爆破,我错过了什么吗?     
已邀请:
不,您的操作方式很好。
implode()
只需要1-2个参数(如果您仅提供一个数组,它将通过一个空字符串将片段连接起来)。     
$array = array(\'lastname\', \'email\', \'phone\');


echo \"\'\" . implode(\"\',\'\", $array) . \"\'\";
    
您可以使用
array_map()
function add_quotes($str) {
    return sprintf(\"\'%s\'\", $str);
}

$csv =  implode(\',\', array_map(\'add_quotes\', $array));
演示 另请注意,如果要写入文件,则有“ 8”字样。     
$ids = sprintf(\"\'%s\'\", implode(\"\',\'\", $ids ) );
    
不知道这样是否更快,但是,您可以使用方法保存一行代码: 从
$array = array(\'lastname\', \'email\', \'phone\');
$comma_separated = implode(\"\',\'\", $array);
$comma_separated = \"\'\".$comma_separated.\"\'\";
至:
$array = array(\'lastname\', \'email\', \'phone\');
$comma_separated = \"\'\".implode(\"\',\'\", $array).\"\'\";
    
如果要使用循环,也可以执行以下操作:
$array = array(\'lastname\', \'email\', \'phone\');
foreach($array as &$value){
   $value = \"\'$value\'\";
}
$comma_separated = implode(\",\", $array);
演示:http://codepad.org/O2kB4fRo     
另外,您可以创建这样的功能:
function implode_with_quotes(array $data)
{
    return sprintf(\"\'%s\'\", implode(\"\', \'\", $data));
}
    
如果要避免使用fopen / fputcsv子系统,请使用以下代码段,该代码段从关联数组中构建转义的CSV字符串。...
$output = \'\';
foreach ($list as $row) {
  $output .= \'\"\' . implode(\'\", \"\', array_values($row)) . \'\"\' . \"\\r\\n\";
}
或从对象列表中...
foreach ($list as $obj) {
  $output .= \'\"\' . implode(\'\", \"\', array_values((array) $obj)) . \'\"\' . \"\\r\\n\";
}
然后,您可以根据需要输出字符串。     
另一个可能的选择,取决于您需要的数组:
$array = array(\'lastname\', \'email\', \'phone\');
echo json_encode($array);
这会将\'[\'和\'] \'放在字符串中,您可能想要也可能不需要。     
你也可以这样
<?php
$csv= \'\\\'\' . join(array(\'lastname\', \'email\', \'phone\'),\'\\\',\').\'\\\'\';
echo $csv;
?>
    
我想这就是你想做的
$array = array(\'lastname\', \'email\', \'phone\');
echo \"\'\" . implode(\"\',\'\", explode(\',\', $array)) . \"\'\";
    

要回复问题请先登录注册