为什么我必须在字符串中用双引号转义,并用单引号括起来


Why do I have to escape double quotes in my string surrounded by single quotes?

我有一个变量,我将其设置为HTML标记(下拉菜单):

$weapon_secondary = '<select name="weapon" class="dropdown">
<option>Option 1</option>
<option>Option 2</option>
</select>'

运行我的PHP文件会给我

分析错误:语法错误,第437行的C:''web''submit_build.php中出现意外的"武器"(T_STRING)

一旦我转义了双引号,解析器就会正常工作。我以为单引号中的字符串是"原样"?这个代码工作得很好:

$weapon_secondary = '<select name='"weapon'" class='"dropdown'">
<option>Option 1</option>
<option>Option 2</option>
</select>'

为什么我必须在单引号中转义双引号?

您的错误一定在其他地方。

参见工作示例:http://phpfiddle.org/main/code/m6g-25w

变量赋值末尾似乎缺少分号;

应该是:

$weapon_secondary = '<select name="weapon" class="dropdown">
<option>Option 1</option>
<option>Option 2</option>
</select>';

作为一种替代方案,您可以使用heredoc来声明变量,并避免这种引用练习:

$weapon_secondary <<< EOF
<select name="weapon" class="dropdown">
<option>Option 1</option>
<option>Option 2</option>
</select>
EOF;

您不应该,这里一定有一些配置错误。请确保在php.ini文件中禁用了Magic Quotes。