2010-08-31 46 views
0

中有什麼含義。這個聲明在PHP

$row['NO'] = '<a href="javascript:void(0)"  onClick="openmywindow(\''.$row['bcd'].'\',\''.$row['gfh'].'\',\''.$row['test2'].'\',\''.$_REQUEST['test1'].'\')">'.$row['abc'].'</a>' 

在上面的語句中,以'\'等方式轉義值的含義是什麼。我怎麼學這個? 在上面的聲明中,我想用靜態值'OPEN'替換php變量$row['TEST2'],但是我收到語法錯誤。

回答

2
$row['NO'] = '<a href="javascript:void(0)" onClick="openmywindow(\''.$row['bcd'].'\',\''.$row['gfh'].'\',\'OPEN\',\''.$_REQUEST['test1'].'\')">'.$row['abc'].'</a>'; 

因爲逃逸是非常混亂,可能是更好的使用HEREDOC:

$row['NO'] =<<<EOC; 
<a href="javascript:void(0)" onClick="openmywindow('$row[bcd]','$row[gfh]','OPEN','$_REQUEST[test1].')">$row[abc]</a> 
EOC; 

更多關於字符串in the manual(包括逃逸和here)。

PS:請勿使用$_REQUEST。而是使用$_GET$_POST

1

在上面的語句是什麼在 方式suchas「\」轉義值的 意思。我們怎樣才能學會 這個

看一看這個教程:)

PHP and Escaping

對於錯誤,請確保您正確地轉義字符串。

0

這是我會建議你做的,而不是逃避+連接字符串(一個在這裏是合適的。):

$html = "<a href=\"javascript:void(0);\" onclick=\"openmywindow('%s','%s','%s',%s');\">%s</a>"; 
$row['NO'] = sprintf($html, 
    $row['bcd'], 
    $row['gfh'], 
    $row['test2'], 
    $_REQUEST['test1'], 
    $row['abc'] 
); 

,然後替換任何你需要更換。 ..閱讀有關sprintf的手冊瞭解更多詳情。

此外,如果$html之後的任何參數包含'字符,則必須在這些參數上調用addslashes

** UPDATE **

關於$_REQUEST,讀here爲什麼不建議使用它。

+0

你忘了轉義雙引號,爲你解決;) – NikiC 2010-08-31 19:51:26

+0

@nikic,謝謝。 – 2010-08-31 19:53:29