php解析和空白错误

时间:2012-06-20 10:10:57

标签: php

echo "<OPTION value=$data2['product_id']>$data2['product_id']</OPTION>";

这给了我以下错误:

  

PHP Parse错误:语法错误,意外T_ENCAPSED_AND_WHITESPACE,   期待T_STRING或T_VARIABLE或T_NUM_STRING

你可以帮帮我吗?如何解决此错误?

5 个答案:

答案 0 :(得分:2)

echo "<OPTION value=".$data2['product_id'].">".$data2['product_id']."</OPTION>";

答案 1 :(得分:1)

无论

echo "<OPTION value=$data2[product_id]>$data2[product_id]</OPTION>";

echo "<OPTION value={$data2['product_id']}>{$data2['product_id']}</OPTION>";

答案 2 :(得分:1)

可以通过将变量包装在花括号内来删除错误:

echo "<OPTION value={$data2['product_id']}>{$data2['product_id']}</OPTION>";

虽然这会更好(逃避输出):

echo '<option value="', 
  htmlspecialchars($data2['product_id']), '">', 
  htmlspecialchars($data2['product_id']), 
  '</option>';

答案 3 :(得分:1)

只需使用:

echo "<OPTION value=$data2[product_id]>$data2[product_id]</OPTION>";

echo "<OPTION value=" . $data2['product_id'] . ">" . $data2['product_id'] . "</OPTION>";

echo sprintf("<OPTION value=%s>%s</OPTION>", $data2['product_id'], $data2['product_id']); // separate logic from presentation

在引用双引号字符串中的关联或数字数组时,不得使用引号。

我建议您在HTML属性中使用引号,并使用htmlentities()htmlspecialchars()代表value="..."以及OPTION内的文字作为一般的最佳实践。

答案 4 :(得分:1)

我更喜欢使用printf(或sprintf)而不是将变量放在字符串中,因为我觉得它更容易阅读。您可能还希望HTML使用htmlspecialchars转义值,以避免在值包含<>时出错。

$prodid = htmlspecialchars($data2['product_id']);
printf('<OPTION value="%s">%s</OPTION>',
       $prodid,
       $prodid);