如何在php中转义双引号? /“ 不管用

时间:2014-08-06 12:34:37

标签: php html syntax double-quotes backslash

我花了好几个小时试图让这段代码起作用:

<?php foreach ($stocks as $stock):?>
    <option value="<?= $stock(\"symbol\") ?>" > <?= $stock("symbol") ?></option>   
<?php endforeach ?>

运行此代码时出现错误:

  

解析错误:语法错误,意外&#39;&#34;符号\&#34;)?&gt;&#34;&#39;   (T_CONSTANT_ENCAPSED_STRING),期待标识符(T_STRING)   第7行/home/jharvard/vhosts/pset7/templates/sell_form.php

请帮忙!

5 个答案:

答案 0 :(得分:3)

将其更改为:

<option value="<?= $stock("symbol") ?>" > <?= $stock("symbol") ?></option>

您正在逃避不需要转义的引号。

答案 1 :(得分:2)

试试这个,只需更改报价:

<?php foreach ($stocks as $stock):?>
   <option value="<?= $stock('symbol'); ?>" > <?= $stock("symbol"); ?></option>   
<?php endforeach ?>

注意:未经测试的建议。

答案 2 :(得分:1)

这里根本没有必要逃避引号。 \“symbol \”在这里被视为常量,但该名称没有常量。

周围的HTML引号仅由浏览器评估,并且不对PHP解释器起任何作用。 PHP只会评估内部的东西并忽略周围的内容,浏览器的HTML解析将永远不会在PHP代码中看到引号,而只会看到$ stock(“symbol”)的结果字符串

答案 3 :(得分:1)

我不确定您要尝试做什么,但由于您使用了foreach,我猜测这是一个多维数组。

试试这个:

<?php
$stocks = array(
    array(
        "symbol" => "value2"
        ),
    array(
        "symbol" => "value2"
        )
    );
?>
<select>
<?php foreach ($stocks as $stock):?>
    <option value="<?= $stock["symbol"] ?>"> <?= $stock["symbol"] ?></option>   
<?php endforeach ?>
</select>

修改:如果您希望显示屏有双引号,请使用以下命令:

    <option value="<?= $stock["symbol"] ?>">"<?= $stock["symbol"] ?>"</option>   

答案 4 :(得分:0)

<?php foreach ($stocks as $stock):?>
<option value="<?= $stock("\"symbol\"") ?>" > <?= $stock("symbol") ?></option>   
<?php endforeach ?>

您可以使用单引号或使用上面的代码。