2015-08-03 3 views
0

Я запутался, потому что я написал код и на виртуальном сервере php он работал нормально, но когда я загрузил его на сервер, я получил ошибку синтаксического анализа и не знаю, как иметь дело с этим.Ошибка синтаксиса PHP, неожиданный '[' "

Error is on line 8 $toSearch ,Parse 
error: syntax error, unexpected '[' 

Вот код:

<?php 
function decodeName($name) 
{ 
    if (substr($name,0,2)=="p_") 
    { 
     $name = substr($name,2); 
    } 
    $toSearch=["_c_","_s_","_q_","_d_","_p_","_e_","_lp_","_rp_","_"]; 
    $toReplace=[",","/","\"",".","-","=","(",")"," "]; 
    for ($i=0; $i<count($toReplace); $i++) 
    { 
     $name = str_replace($toSearch, $toReplace, $name); 
    } 
    return $name; 
} 
function codeName($name, $addPrefix = 0) 
{ 
    if (substr($name,0,2)=="p_") 
    { 
     $name = substr($name,2); 
    } 
    $toReplace=["_c_","_s_","_q_","_d_","_p_","_e_","_lp_","_rp_","_"]; 
    $toSearch=[",","/","\"",".","-","=","(",")"," "]; 
    for ($i=0; $i<count($toReplace); $i++) 
    { 
     $name = str_replace($toSearch, $toReplace, $name); 
    } 
    if ($addPrefix >0) 
    { 
     $name = "p_".$name; 
    } 
    return $name; 
} 
function getIDs($xml_handle, $nameToSearch) 
{ 
    $matches=array(); 
    $ID =$xml_handle->getElementsByTagName('WVA'); 
    $ID2 = $xml_handle->getElementsByTagName('WVA2'); 
    $nameToSearch = codeName($nameToSearch,0); 
    for ($i = 0; $i < $ID->length; $i++) 
    { 
     $id = $ID->item($i); 
     $id2 = $ID2->item($i); 
     if ($id->nodeValue==$nameToSearch) 
     { 
      array_push($matches,$id->parentNode); 
     } 
     elseif ($id2->nodeValue==$nameToSearch) 
     { 
      array_push($matches,$id2->parentNode); 
     } 
    } 
    return $matches; 
} 
function getModelDetails($xml_handle, $modelName) 
{ 
    $modelDetails = array(); 
    $modelName = codeName($modelName,1); 
    $model = $xml_handle->getElementsByTagName($modelName); 
    $model = $model -> item(0); 
    $model = $model -> childNodes; 
    for ($i=0; $i<$model->length; $i++) 
    { 
     $modelDetails[$i]=decodeName($model -> item($i)->nodeValue); 
    } 
    return $modelDetails; 
} 
?> 
+2

У вас есть более ранняя версия на php, которая не поддерживает объявление массивов как '[a, b, c]'. Вместо этого используйте 'array (a, b, c)' –

+0

Какую версию PHP вы используете? –

+1

попробуйте объявить массив как $ toSearch = array ("_ c _", "_s _", "_ q _", "_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ –

ответ

0

Короткий синтаксис массива поддерживается PHP 5.4

$fruits = ['apples', 'oranges', 'bananas']; 

// associative array 
$array = [ 
    'foo' => 'bar', 
    'bar' => 'foo' 
]; 

старый способ:

$fruits = array('apples', 'oranges', 'bananas'); 
0

использовать следующий синтаксис

$toSearch=array("_c_","_s_","_q_","_d_","_p_","_e_","_lp_","_rp_","_"); 
$toReplace=array(",","/","\"",".","-","=","(",")"," "); 
Смежные вопросы