意想不到的T_IF,期待')'

时间:2013-07-09 04:47:20

标签: php

解析错误:语法错误,意外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) {
    ,'@:p@is',
    '@:eek:@is',
    '@:rolleyes:@is',
    '@;\)@is',
    '@:o@is',
    '@:D@is',
    '@:\(@is',
    '@:mad:@is',
    '@:\)@is',
    '@:cool:@is'
    }
);

2 个答案:

答案 0 :(得分:5)

您无法在if中包含array条件。像这样定义数组的主要部分:

$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(
        '@:p@is',
        '@:eek:@is',
        '@:rolleyes:@is',
        '@;\)@is',
        '@:o@is',
        '@:D@is',
        '@:\(@is',
        '@:mad:@is',
        '@:\)@is',
        '@:cool:@is'
    );
    $final = array_merge($find, $smiles);
}

答案 1 :(得分: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(
    '@:p@is',
    '@:eek:@is',
    '@:rolleyes:@is',
    '@;\)@is',
    '@:o@is',
    '@:D@is',
    '@:\(@is',
    '@:mad:@is',
    '@:\)@is',
    '@:cool:@is'
);

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