2011-06-13 19 views
5

Intenté utilizar file_put_contents generar nueva página. pero encuentro algunos problemas para romper una nueva línea.PHP file_put_contents nueva línea

<?php 
$data ='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r\n'; 
$data .='<html xmlns="http://www.w3.org/1999/xhtml" lang="en">\r\n'; 
$data .='<head>\r\n'; 
$data .='</head>\r\n'; 
$data .='<body>\r\n'; 
$data .='<p>put something here</p>\r\n'; 
$data .='</body>\r\n'; 
$data .='</html>\r\n'; 
file_put_contents(dirname(__FILE__) . '/new.php', $data); 
?> 

me trataron \n o \r\n, todos ellos no se puede hacer una nueva línea:

1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r\n<html xmlns="http://www.w3.org/1999/xhtml" lang="en">\r\n<head>\r\n</head>\r\n<body>\r\n<p>put something here</p>\r\n</body>\r\n</html>\r\n 
+0

¿Por qué está escribiendo un archivo HTML con una extensión .php? Quiero decir, es un archivo PHP legal, pero parece extraño. – Zecc

+3

Para tales usos, es posible que también desee investigar [cadenas "HEREDOC"] (http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc) en el manual. – mario

+0

@Zecc, estoy escribiendo un archivo HTML con un '.php' porque incluiría' page munu' y 'page footer' en él. –

Respuesta

29

Usando \r o \n entre comillas simples lleva literalmente. usar comillas dobles en lugar de como "\ r \ n"

Así que una línea puede llegar a ser:

$data .= "<head>\r\n"; 

o

$data .='<head>' . "\r\n"; 
5

está usando el single-quoted character literals, que no interpretar secuencias de escape.
Cambie a cadenas de comillas dobles o, preferiblemente, use heredoc syntax.

<?php 
$data = <<<CONTENTS 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org /TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en"> 
<head> 
</head> 
<body> 
<p>put something here</p> 
</body> 
</html> 
CONTENTS; 
file_put_contents(dirname(__FILE__) . '/new.php', $data); 
?> 

Pero realmente, ¿por qué estás escribiendo un archivo codificado? Eso es realmente extraño.

+0

Este es también un mejor método. –

+0

pero '' HEREDOC "strings' apenas se rompe, si necesito algo de procesamiento de php, como' if ... else ... ' –