当我尝试使用php mysql的file_put_contents创建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);
?>
答案 0 :(得分:8)
这是一些相当难看的代码。您是否正在创建包含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()
设置Content-Type - 您创建的HTML文件将不会继承此信息,如果此PHP脚本没有向浏览器输出任何内容,则它是多余的while()
循环中,您将在每个循环中替换$php
的值,因此只会在页面中执行最后的值。$php
的字符串包含PHP代码,在HTML文件中,它不会执行任何操作。答案 1 :(得分:4)
代码中有很多问题。最明显的是下面列出的。
"echo '<div class=\"title\">'.htmlspecialchars($row['title'],UTF-8).'</div><br />';
----------------------------^
您要使用双引号"
打开您的对帐单,但请使用单引号'
关闭它。用双引号关闭它。
$php = "e....";
您将继续覆盖循环中$php
变量的值。你想要的是连接它
$php .= "...";
您已经抑制了查询命令的错误。如果出现问题你怎么知道?明智地使用@
运算符。
@mysql_query....
从我看到的,你正在弄乱你的字符串,因为你试图将PHP代码放入一个文本文件中(可能稍后包含或eval它?)。有更简洁的方法来制作你的字符串。使阅读更容易。如果您提供有关您正在尝试做的更多详细信息,我们可以帮助您。
答案 2 :(得分:3)
修复:
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 />'";