2017-03-16 65 views
0

鑑於下面的代碼塊,我想將$category_info['name']包含到htmlspecialchars(),但由於該變量包含在大括號中,因此存在一個小問題。圍繞大括號之間的變量添加htmlspecialchars

$data['sendCategory'] .= " 
     'id': {$category_id}, 
     'name': '{$category_info['name']}', 
     'parent': {$category_id_parent}, 
     'breadcrumb': [ 
     "; 

我嘗試了以下變體,但他們分手代碼:

'name': '{htmlspecialchars($category_info['name'])}', 

'name': 'htmlspecialchars({$category_info['name']})', 
+0

您是否也嘗試' '.htmlspecialchars($ category_info [ '名'])。'' – Jer

+0

PHP將評估(插值),雙引號內的變量,但它不評估引號內的任意代碼。所以,你需要打破引號,或者在此之前的任何地方通過'htmlspecialchars'運行變量(無論你在哪裏設置'$ category_info ['name']') –

+0

''name':'{htmlspecialchars($ category_info [''名稱'])}''...'''**不是**與'「'相同:http://php.net/manual/en/language.types.string.php – CD001

回答

2

您可以在該行之前做到這一點:

$encoded_category_info = htmlspecialchars($category_info['name']); 
$data['sendCategory'] .= " 
       'id': {$category_id}, 
       'name': '{$encoded_category_info}', 
       'parent': {$category_id_parent}, 
       'breadcrumb': [ 
       "; 

或者,如果你真的希望它是內聯,concatenat Ë它:

$data['sendCategory'] .= " 
       'id': {$category_id}, 
       'name': '" . htmlspecialchars($category_info['name']) . "', 
       'parent': {$category_id_parent}, 
       'breadcrumb': [ 
       "; 

基本上,你即將對你的字符串「內碼代碼」,它可以快速地使其難以解析和理解事物的概念。儘可能將其分開。不僅適用於解析器,還適用於稍後閱讀代碼的情況。

+0

謝謝大衛這是一個愚蠢的問題,因爲我反思了它,答案很簡單,我選擇了聲明一個新變量,這樣我就可以保持代碼清潔。 –

0

試試下面的代碼

$data['sendCategory'] .= " 
       'id': {$category_id}, 
       'name': '{$category_info[\'name\']}', 
       'parent': {$category_id_parent}, 
       'breadcrumb': [ 
       ";