2012-11-15 172 views
7

其實我檢查了我的代碼就像一百倍,但我不能找到錯誤:

的錯誤,我得到: 解析錯誤:語法錯誤,在/ home/tennox意想不到的$結束/public_html/php/kalender.php在線46

我試圖做一個函數,計算復活節的星期日,在另一個腳本沒有所有其他的只是工作,但在這一個沒有。反過來也是一樣!

<?php 
$year = isset($_POST['year']) ? intval($_POST['year']) : date('Y'); 
$months = array("", "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"); 
$days = array('So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'); 
$ostern = getOsterSonntag($year); 
?> 
<form action="kalender.php" method="POST" target="_self"> 
<input type="text" name="year" value="<?php echo $year; ?>"> 
</form> 
<table border="1" cellspacing="0"> 
<?php 
for($y=0; $y<32; $y++) { 
    echo "<tr height=\"20\">"; 
    for($x=1; $x<=12; $x++) { 
     echo "<td width=\"5%\">"; 
     $date = strtotime("$y.$x.$year"); 
     $day = date("d", $date); 
     $dayname = $days[date("w", $date)]; 

     if ($y == 0) { 
     echo "<div align=\"center\"><b>$months[$x]</b></div>"; 
     } elseif ($y < date("t",$date) && !($y == 30 && $x == 2)) { 
     if (date("w", $date) == 6 || date("w", $date) == 0) 
      echo "<b>"; 
     echo "$day $dayname"; 
     if ($date == $ostern) 
      echo "(Ostersonntag)"; 
     if (date("w", $date) == 6 || date("w", $date) == 0) 
      echo "</b>"; 
     } else { 
     echo " - "; 
     } 
     echo "</td>"; 
    } 
    echo "</tr>"; 
} 
?> 
</table> 

<?php 
function getOsterSonntag($year) { 
    $a = $year % 19; 
    $b = $year % 4; 
    $c = $year % 7; 
    $k = floor($year/100); 
    $p = floor((8*$k + 13)/25); 
    $q = ($k/4); 
    $d = (19*$a + ((15 + $k - $p - $q) % 30)) % 30; 
    $e = (2*$b + 4*$c + 6*$d + ((4 + $k - $q) % 7)) % 7; 

    $ostern = 22 + $d + $e; 
    if ($ostern > 31){ 
     $ostern -= 31; 
     return strtotime("$ostern.4.$year"); 
    } else 
     return strtotime("$ostern.3.$year"); 
} 
?> 
+2

然你的代碼在本地沒有任何錯誤。 – sglessard

+0

我解決了我的問題 - 我的ftp程序(netdrive)出於某種原因截斷了文件。 -.- – TeNNoX

回答

8

這個錯誤通常意味着你錯過了}。檢查你所有的大括號,並確保你有相同數量{作爲} - 與括號匹配的代碼編輯器(例如Notepad ++)可以使這更容易。

+0

我檢查了所有括號多次...但我會下載記事本++並嘗試:) – TeNNoX

11

這個錯誤意味着PHP已經完成了對代碼的分析,但是您忘記了在頁面的某個地方關閉了一個符號。您可能忘記關閉引號,括號,圓括號或逗號。

希望這會有所幫助。

+0

我檢查了所有括號多次...:/ – TeNNoX

3

在這部分代碼中,我認爲你應該爲其他部分添加{}。

$ostern = 22 + $d + $e; 
     if ($ostern > 31){ 
      $ostern -= 31; 
      return strtotime("$ostern.4.$year"); 
     } else 
      return strtotime("$ostern.3.$year"); 

也是在這部分提出{}這部分是這樣的:

if (date("w", $date) == 6 || date("w", $date) == 0) { 
     echo "<b>"; 
     echo "$day $dayname"; 
} 
+0

那麼,我什麼時候必須放{}和什麼時候不? 好吧,我將它們添加到每個if語句中,但仍存在: 「語法錯誤,意外$ end in /home/tennox/public_html/php/kalender.php 49行」 – TeNNoX