如何在php中转义双引号/";不起作用


How to escape double quotation marks in php? /" is not working

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

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

当运行此代码时,我得到一个错误:

分析错误:语法错误,意外的'"symbol ''"(?>"'(T_CONSTANT_ENCAPSED_STRING(,中应包含标识符(T_STRING(/home/jharvard/vhosts/pset7/templates/sell_form.php on line 7

请帮忙!

将其更改为:

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

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

试试这个,只需更改您的引号:

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

注:未经测试的建议。

这里根本不需要转义引号。''"symbol ''"在这里被当作一个常量来处理,但没有那个名称的常量。

周围的HTML引号只由浏览器评估,对PHP解释器没有任何作用。PHP只会评估里面的东西,而忽略周围的东西,浏览器的HTML解析永远不会在PHP代码中看到引号,只会看到$stock("symbol"(的结果字符串

我不确定您要做什么,但由于您使用了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>   
<?php foreach ($stocks as $stock):?>
<option value="<?= $stock("'"symbol'"") ?>" > <?= $stock("symbol") ?></option>   
<?php endforeach ?>

您可以使用单引号,也可以使用类似上面的代码。