2013-07-09 56 views
-4

解析錯誤:語法錯誤,意外的T_IF,期待')'意外的T_IF,期待')'

我該怎麼辦?

$show_smileys = true; 

$find = array(
    '!\[h1\](.+)\[/h1\]!isU', 
    '!\[b\](.+)\[/b\]!isU', 
    '!\[i\](.+)\[/i\]!isU', 
    '!\[u\](.+)\[/u\]!isU', 
    '!\[strike\](.+)\[/strike\]!isU', 
    '!\[spoiler\](.+)\[/spoiler\]!isU', 
    '!\[url=(.*?)\](.*?)\[/url\]!is', 
    '!\[player\](.+)\[/player\]!isU', 
    '!\[quote=(.*)\]!siU', 
    '!\[/quote\]!si' 
    if ($show_smileys == true) { 
    ,'@:[email protected]', 
    '@:eek:@is', 
    '@:rolleyes:@is', 
    '@;\)@is', 
    '@:[email protected]', 
    '@:[email protected]', 
    '@:\(@is', 
    '@:mad:@is', 
    '@:\)@is', 
    '@:cool:@is' 
    } 
); 
+1

你不能把'if'放在這樣的數組中。 – Barmar

+4

這個問題似乎是脫離主題,因爲它是關於一個簡單的錯字。 – hakre

回答

5

您不能在array中包含if條件。定義你的陣列的主要部分是這樣的:

$find = array(
    '!\[h1\](.+)\[/h1\]!isU', 
    '!\[b\](.+)\[/b\]!isU', 
    '!\[i\](.+)\[/i\]!isU', 
    '!\[u\](.+)\[/u\]!isU', 
    '!\[strike\](.+)\[/strike\]!isU', 
    '!\[spoiler\](.+)\[/spoiler\]!isU', 
    '!\[url=(.*?)\](.*?)\[/url\]!is', 
    '!\[player\](.+)\[/player\]!isU', 
    '!\[quote=(.*)\]!siU', 
    '!\[/quote\]!si' 
); 

,然後使用條件合併的其餘部分:

if ($show_smileys == true) { 
    $smiles = array(
     '@:[email protected]', 
     '@:eek:@is', 
     '@:rolleyes:@is', 
     '@;\)@is', 
     '@:[email protected]', 
     '@:[email protected]', 
     '@:\(@is', 
     '@:mad:@is', 
     '@:\)@is', 
     '@:cool:@is' 
    ); 
    $final = array_merge($find, $smiles); 
} 
+0

也許最好的做法是在if之前聲明'$ smiles = array();'。 – brasofilo

0

你不能把if在陣列的中間,它只能用於允許聲明的地方。這樣做:

$find = array(
    '!\[h1\](.+)\[/h1\]!isU', 
    '!\[b\](.+)\[/b\]!isU', 
    '!\[i\](.+)\[/i\]!isU', 
    '!\[u\](.+)\[/u\]!isU', 
    '!\[strike\](.+)\[/strike\]!isU', 
    '!\[spoiler\](.+)\[/spoiler\]!isU', 
    '!\[url=(.*?)\](.*?)\[/url\]!is', 
    '!\[player\](.+)\[/player\]!isU', 
    '!\[quote=(.*)\]!siU', 
    '!\[/quote\]!si' 
); 

$smileys = array(
    '@:[email protected]', 
    '@:eek:@is', 
    '@:rolleyes:@is', 
    '@;\)@is', 
    '@:[email protected]', 
    '@:[email protected]', 
    '@:\(@is', 
    '@:mad:@is', 
    '@:\)@is', 
    '@:cool:@is' 
); 

if ($show_smileys) { 
    $find = array_merge($find, $smileys); 
}