Php打印数组到逗号分隔、带引号的txt文件
我有一个这样的数组Php打印数组到逗号分隔、带引号的txt文件,php,arrays,fopen,Php,Arrays,Fopen,我有一个这样的数组 $rowArray = array( array( "http://www.website.com/article.html", "09/18/2013", "An article about stuff" ), array( "http://www.google.com", "09/18/2013", "The Google", ) ); 我想制
$rowArray = array(
array(
"http://www.website.com/article.html",
"09/18/2013",
"An article about stuff"
),
array(
"http://www.google.com",
"09/18/2013",
"The Google",
)
);
我想制作一个.txt文件,如下所示:
http://www.website.com/article.html,09/18/2013,"An article about stuff"\r\n
http://www.google.com,09/18/2013,"The Google"\r\n
请注意带空格和逗号的字符串周围的“引号”,以及\r\n返回值
我尝试过:(我将标题设置在其他位置,并设置好标题)
还有这个
$row[] = "\r\n";
fwrite($op, implode(",",$row));
echo mb_convert_encoding(implode(",", $row) . "\r\n", 'UTF-8');
还有这个
$row[] = "\r\n";
fwrite($op, implode(",",$row));
echo mb_convert_encoding(implode(",", $row) . "\r\n", 'UTF-8');
我需要转换它,因为我的数据库中有从web上刮取的字符,文本编辑器需要UTF-8。有人能帮我吗?我似乎无法获得双引号和\r\n以及“引号”。提前谢谢。试试看
foreach ($rowArray as $row){
$row[2] = '"' . $row[2] . '"';
fwrite($op, implode(',', $row) . "\r\n");
}
好的,这是我需要的
- UTF-8的字符编码
- 的行结尾\r\n
- 用空格或逗号在字符串周围加双引号,这样就不会破坏csv格式(即使我将其保存为txt文件)
protected function _putcsv(&$handle, $fields = array(), $delimiter = ',', $enclosure = '"') {
$str = '';
$escape_char = '\\';
// I changed $value to $valueRaw so I could convert it easily
foreach ($fields as $valueRaw) {
// I added this line to convert to UTF-8 to set the $value variable
$value = mb_convert_encoding($valueRaw, 'UTF-8');
if (strpos($value, $delimiter) !== false ||
strpos($value, $enclosure) !== false ||
strpos($value, "\n") !== false ||
strpos($value, "\r") !== false ||
strpos($value, "\t") !== false ||
strpos($value, ' ') !== false) {
$str2 = $enclosure;
$escaped = 0;
$len = strlen($value);
for ($i = 0; $i < $len; $i++) {
if ($value[$i] == $escape_char) {
$escaped = 1;
} else if (!$escaped && $value[$i] == $enclosure) {
$str2 .= $enclosure;
} else {
$escaped = 0;
}
$str2 .= $value[$i];
}
$str2 .= $enclosure;
$str .= $str2 . $delimiter;
} else {
$str .= $value . $delimiter;
}
}
$str = substr($str, 0, -1);
// I changed the string ending from just "\n" to "\r\n"
$str .= "\r\n";
return fwrite($handle, $str);
}
protectedfunction\u putcv(&$handle,$fields=array(),$delimiter=',',$enclosure='){
$str='';
$escape\u char='\\';
//我将$value更改为$valueRaw,以便可以轻松地进行转换
foreach($valueRaw形式的字段){
//我添加了这一行来转换为UTF-8,以设置$value变量
$value=mb_convert_编码($valueRaw,'UTF-8');
if(strpos($value,$delimiter)!==false||
STRPO($value,$enclosure)!==false||
strpos($value,“\n”)!==false||
strpos($value,“\r”)!==false||
strpos($value,“\t”)!==false||
STRPO($value',)!==false){
$str2=$enclosure;
$s=0;
$len=strlen($value);
对于($i=0;$i<$len;$i++){
如果($value[$i]=$escape\u char){
$s=1;
}else if(!$escape&&$value[$i]==$enclosure){
$str2.=$enclosure;
}否则{
$s=0;
}
$str2.=$value[$i];
}
$str2.=$enclosure;
$str.=$str2.$delimiter;
}否则{
$str.=$value.$delimiter;
}
}
$str=substr($str,0,-1);
//我将以“\n”结尾的字符串更改为“\r\n”
$str.=“\r\n”;
返回fwrite($handle,$str);
}
问题解决了。谢谢你的回答