使用file_put_contents通过php mysql创建html文件

使用file_put_contents通过php mysql创建html文件,php,file-io,Php,File Io,当我试图用php mysql创建html文件时,遇到了一些麻烦。我的代码如下,第一条回音线出现了一些错误。我需要一些帮助。谢谢 我得到的错误是 Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING 在这一行 $php = "echo '<div class=\"title\">'.htmlspecialchar

当我试图用php mysql创建html文件时,遇到了一些麻烦。我的代码如下,第一条回音线出现了一些错误。我需要一些帮助。谢谢

我得到的错误是

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
在这一行

$php = "echo '<div class=\"title\">'.htmlspecialchars($row['title'],UTF-8).'</div><br />';
这是我剩下的代码

header('Content-type:text/html; charset=utf-8');
set_time_limit(30);
require_once dirname(__FILE__) . '/conn.php'; 
mysql_select_db("ba_10978243",$handle_db5);
$result = @mysql_query("SELECT title,content,date FROM new_heelp Order By date DESC LIMIT 15");
while ($row = @mysql_fetch_array($result))
{  
$php = "echo '<div class=\"title\">'.htmlspecialchars($row['title'],UTF-8).'</div><br />';//echo wrong in this line : Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
    $data = date(\"w j n Y H:i:s\", $row['date']);
    echo '<div class=\"date\">'.$data.'</div>';
    if(!empty($row['content'])){ 
      echo '<div class=\"content\">'.$row['content'].'</div>';
    }";
}
file_put_contents("$article_20100421_132.html", $php);
?>
要修复:

 Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
更改您的样本行以包含最终收盘报价:

 $php = "echo '<div class=\"title\">'.htmlspecialchars($row['title'],UTF-8).'</div><br />'";

这是一些相当丑陋的代码。您正在创建包含PHP语法的字符串,然后将其存储在HTML文件中?不去上班

<?php
set_time_limit( 30 );

require_once( dirname( __FILE__ ) . '/conn.php' ); 
mysql_select_db( 'ba_10978243' , $handle_db5 );

$result = @mysql_query( 'SELECT `title , `content` , `date` FROM `new_heelp` ORDER BY `date` DESC LIMIT 15' );

if( !$result || mysql_num_rows( $result )>0 ){
  echo 'ERROR: No SQL Rows Returned.';
}else{
  $output = array();
  $rowTpl = '<div class="title">%s</div><br/><div class="date">%s</div>%s';
  while( $r = @mysql_fetch_array( $result ) ){
    $output[] = sprintf( $rowTpl ,
                  htmlspecialchars( $row['title'] , ENT_COMPAT , 'UTF-8' ) ,
                  date( 'w j n Y H:i:s' , $row['date'] ) ,
                  ( !empty( $row['content'] ) ? $row['content'] : '' ) );
  }
  file_put_contents( "{$article}_20100421_132.html" , implode( "\n" , $output ) ); # NOTE: $article is not declared anywhere above this line
?>
代码中问题的摘要:

当不需要时,您可以使用header来设置内容类型-您正在创建的HTML文件将不会继承此信息,如果此PHP脚本没有向浏览器输出任何内容,则它是多余的。 仔细检查SQL中的表名-它真的是heelp吗? 在while循环中,您将在每个循环中替换$php的值,因此只有最后的值将被带入页面。 用于设置$php的字符串包含php代码,在HTML文件中,这些代码不会起任何作用。 当被单引号包围时,您正在转义双引号-冗余 您正在新HTML文件的名称中使用一个变量,该变量未在该行上方的任何位置声明,这将给您带来问题。
代码中有很多问题。下面列出了最引人注目的例子

"echo '<div class=\"title\">'.htmlspecialchars($row['title'],UTF-8).'</div><br />';
----------------------------^
在循环中不断重写$php变量的值。您想要的是连接它

$php .= "...";
您已抑制查询命令中的错误。如果出了问题,你怎么知道?明智地使用@operator

@mysql_query....

从我看到的情况来看,您正在将字符串弄得一团糟,因为您试图将PHP代码放入一个文本文件中,以便稍后包含或评估它?。有更干净的方法来制作你的绳子。也使它更容易阅读。如果您提供更多有关您尝试执行的操作的详细信息,我们将为您提供帮助。

-1因为您没有发布正确的错误消息或描述出错的原因。在113个问题之后,这是意料之中的。另外,您使用的是$php=而不是$php。您不是在连接字符串all@Pekka,我在第一个回显行后发布了我的错误,解析错误:语法错误,意外的T_封装的_和_空格,应为T_字符串或T_变量或T_NUM_STRING@JohnP,我试过$php.=,但仍然不正确。谢谢
@mysql_query....