首页 文章

php解析和whitespacing错误[关闭]

提问于
浏览
0
echo "<OPTION value=$data2['product_id']>$data2['product_id']</OPTION>";

这给了我以下错误:

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

你能救我一下吗?我该如何解决这个错误?

5 回答

  • 1

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

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

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

    echo '<option value="', 
      htmlspecialchars($data2['product_id']), '">', 
      htmlspecialchars($data2['product_id']), 
      '</option>';
    
  • 1
    echo "<OPTION value=".$data2['product_id'].">".$data2['product_id']."</OPTION>";
    
  • 2

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

    要么

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

    我更喜欢使用printf(或sprintf)而不是将变量放在字符串中,因为我认为's much easier to read. You' ll可能还希望HTML使用htmlspecialchars转义值,以避免错误,如果值包含 <> .

    $prodid = htmlspecialchars($data2['product_id']);
    printf('<OPTION value="%s">%s</OPTION>',
           $prodid,
           $prodid);
    
  • 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属性中使用 do use 引用,并使用 htmlentities()htmlspecialchars() 作为 value="..." 以及 OPTION 中的文本作为一般的最佳实践 .

相关问题