strip_tags remove quitar para ob_end funcion etiquetas ejemplo borrar php codeigniter phpexcel

php - remove - strip_tags wordpress



no se pudo eliminar el búfer. Sin búfer para eliminar (3)

Desde la sección de comentarios de la documentación de PHP , acceda a cornel en scoalaweb dot com:

No utilice ob_clean() u ob_end_clean() para borrar el espacio en blanco u otro contenido no deseado "accidentalmente" generado por los archivos incluidos.

Los archivos incluidos no deberían generar contenido no deseado en primer lugar.

Si lo hacen, estás haciendo algo mal, como insertar espacios en blanco después de " ?> " (No debería haber un " ?> " Al final de los archivos PHP) u otros errores que no sigan las reglas básicas de sintaxis de PHP .

Estoy tratando de generar un archivo de Excel con la extensión .xlsx del código a continuación. Puedo descargar el archivo muy bien, pero cuando lo abro con la hoja de Excel, recibo el siguiente error de advertencia. Excel no puede abrir el archivo ''dindi.xlsx'' porque el formato de archivo o la extensión del archivo no son válidos. Asegúrese de que el archivo no esté dañado y de que la extensión del archivo coincida con el formato del archivo. Cuando lo abrí con un bloc de notas, el archivo tenía el siguiente error:

Aviso: ob_end_clean () [ref.outcontrol]: error al eliminar el búfer. Sin búfer para eliminar

A continuación se muestra el código de lo que estoy tratando de hacer.

public function exportResults() { $this -> load -> database(); $query = $this -> db -> query(" SELECT * FROM farm LIMIT 10"); $results = $query -> result_array(); $objPHPExcel = new Excel(); $objReader = PHPExcel_IOFactory::createReader(''Excel2007''); $objPHPExcel = $objReader->load(''./files/farmdetails.xlsx''); $objPHPExcel ->getActiveSheet()->setTitle(''farmreport''); $objPHPExcel -> setActiveSheetIndex(0); $i = 1; foreach ($results as $result) { $objPHPExcel -> getActiveSheet() -> SetCellValue(''A'' . $i, $result["name"]); $objPHPExcel -> getActiveSheet() -> SetCellValue(''B'' . $i, $result["dateofcontract"]); $objPHPExcel -> getActiveSheet() -> SetCellValue(''C'' . $i, $result["leasorname"]); $objPHPExcel -> getActiveSheet() -> SetCellValue(''D'' . $i, $result["acre"]); $objPHPExcel -> getActiveSheet() -> SetCellValue(''E'' . $i, $result["zone"]); $i++; echo $result["name"]; } ob_end_clean(); $filename = "dindi.xlsx"; header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); header(''Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet''); header(''Content-Disposition: attachment;filename='' . $filename); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, ''Excel2007''); ob_end_clean(); $objWriter -> save(''php://output''); $objPHPExcel -> disconnectWorksheets(); unset($objPHPExcel); }


Ese error es solo decirle que no había búfer para eliminar. Para evitarlo solo usa:

if (ob_get_contents()) ob_end_clean();

(compruebe si hay un buffer de salida activo) o:

if (ob_get_length()) ob_end_clean();

(comprueba si hay una cadena no vacía en el búfer) como lo sugiere @Venu.

también llamas a ob_end_clean(); dos veces allí. Y eso solo funciona con búferes apilables. Del manual de PHP:

Esta función descarta el contenido del búfer de salida superior y desactiva el búfer de salida.

¿Estás seguro de que no quieres simplemente usar ob_clean() ?