2011-04-21 59 views
-1

當我嘗試使用php mysql的file_put_contents creat html文件時,遇到了一些麻煩。我的代碼如下所示,在第一個回顯行中出現了一些錯誤。需要一些幫助。謝謝。使用file_put_contents使用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); 
?> 
+4

學習基本知識... – 2011-04-21 09:38:37

+1

-1不發佈正確的錯誤消息(或描述出錯的地方)。 * * 113個問題後,這是預期的。 – 2011-04-21 09:42:51

+1

此外,您使用'$ php ='''而不是'$ php。='''。你沒有連接字符串 – JohnP 2011-04-21 09:46:26

回答

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()設置內容類型時,它是沒有必要的 - 要創建的HTML文件不會繼承這個信息,如果這個PHP腳本不會向瀏覽器輸出任何東西,它是多餘的。
  • 在SQL中仔細檢查Table Name - 它真的是「heelp」嗎?
  • while()循環中,您將在每個循環中替換值$php,因此只有最後一個值將被傳送到頁面中。
  • 您用來設置$php的字符串包含PHP代碼,它在HTML文件中不會執行任何操作。
  • 當您使用單引號括住雙引號時 - 冗餘
  • 您正在新HTML文件的名稱中使用一個變量,該變量未在該行上方任何地方聲明,這會導致您遇到問題。
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 />'"; 
4

代碼中存在很多問題。下面列出了最顯眼的一個。

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

你用雙引號"打開你的說法,但用單引號'關閉它。只需用雙引號將其關閉即可。

$php = "e...."; 

您將覆蓋循環中$php變量的值。你想要連接它

$php .= "..."; 

你已經抑制了查詢命令的錯誤。你怎麼知道是否有問題?明智地使用@運營商。

@mysql_query.... 

從我所看到的,你讓你的字符串的一個爛攤子,因爲你試圖把PHP代碼到一個文本文件(可能以後包括或EVAL嗎?)。有更清潔的方法來製作你的字符串。使讀起來更容易。如果你提供更多關於你想要做什麼的細節,我們可以幫助你。