Я пытаюсь узнать точную длину строки, используя strlen() в php 5.2. Строка ($data) содержит '\t' и '\n'.
echo strlen($data);
Код:
// fetch table header
$header = '';
while ($fieldData = $result->fetch_field()) {
$header .= $fieldData->name . "\t";
}
// fetch data each row, store on tabular row data
while ($row = $result->fetch_assoc()) {
$line = '';
foreach($row as $value){
if(!isset($value) || $value == ""){
$value = "\t";
}else{
// important to escape any quotes to preserve them in the data.
$value = str_replace('"', '""', $value);
// needed to encapsulate data in quotes because some data might be multi line.
// the good news is that numbers remain numbers in Excel even though quoted.
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
$data .= trim($line)."\n";
}
// this line is needed because returns embedded in the data have "\r"
// and this looks like a "box character" in Excel
$data = str_replace("\r", "", $data);
// Nice to let someone know that the search came up empty.
// Otherwise only the column name headers will be output to Excel.
if ($data == "") {
$data = "\nno matching records found\n";
}
// create table header showing to download a xls (excel) file
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=$export_filename");
header("Cache-Control: public");
header("Content-length: " . strlen($data); // tells file size
header("Pragma: no-cache");
header("Expires: 0");
// output data
echo $header."\n".$data;
Это не возвращает точную длину (она меньше фактической длины). Пожалуйста посоветуй.
'\tfoo\nbar'
? - person Gordon   schedule 25.08.2010echo strlen($data)
и чего вы ожидали? - person BoltClock   schedule 25.08.2010strlen()
! - person mvds   schedule 25.08.2010$data='';
для начала, иначе вы получите хорошее предупреждение в этом CSV (могут ли ваши предупреждения составлять до 148 байт? Вы смотрели на csv?) - person mvds   schedule 25.08.2010less
,notepad
,hexdump
или другого основного средства просмотра? - person mvds   schedule 25.08.2010\t
в одном месте, например$line .= $value."\t";
- person mvds   schedule 25.08.2010