2017-03-16 66 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': [ 
       ";