php echo语句中html标记的javascript中的双引号、单引号问题


Double quotes ,single quotes problem in javascript of html tag in php echo statement

我正在使用echo语句,并且在更改select标记时我使用了javascript

    echo('<select name="type"  onchange="(return location.href='.?&amp;class=.'+this.value;)" id="manage_ads">
        <option value="ads">Paid To Click Ads</option>
        <option value="banner_ads">Banner Ad</option>
        <option value="featured_ads">Featured Text Ads</option>
        <option value="featured_link">Featured Link Ads</option>
    </select>');

它显示错误为href='此处单引号与echo语句冲突。

但是,如果我在另一个javascript页面中使用它,那么该函数就不能正常工作,因为它给出了类未定义的错误

function check()
{
    return location.href='.?&amp;class=.'+this.value;
}

那么有什么方法可以使用这个函数

这些通常是进入和退出PHP模式的完美场景:

?>
<select name="type" onchange="(return location.href='.?&amp;class=.'+this.value;)" id="manage_ads">
    <option value="ads">Paid To Click Ads</option>
    <option value="banner_ads">Banner Ad</option>
    <option value="featured_ads">Featured Text Ads</option>
    <option value="featured_link">Featured Link Ads</option>
</select>
<?php

虽然很少使用,但这种策略甚至可以在功能和方法的范围内实现:

function createSelectControl($name, array $options) {
    ?>
    <select name="<?= $name ?>">
        <?php 
            foreach ($options as $name => $value) {
                createSelectOption($name, $value);
            }
        ?>
    </select>
    <?php
}
function createSelectOption($name, $value) {
    ?>
        <option value="<?= $value ?>"><?= $name ?></option>
    <?php
}

重点是:不要用PHP echo大量的HTML(或任何类似的东西(。它将使您免于不可避免的报价不匹配问题。

试试这个,在PHP中,你必须使用反斜杠转义单引号

echo('<select name="type"  onchange="(return location.href=''?&amp;class=''+this.value;)" id="manage_ads">
<option value="ads">Paid To Click Ads</option>
<option value="banner_ads">Banner Ad</option>
<option value="featured_ads">Featured Text Ads</option>
<option value="featured_link">Featured Link Ads</option>
</select>');

您忘记退出

echo('<select name="type"  onchange="(return location.href=''.?&amp;class=.''+this.value;)" id="manage_ads">
        <option value="ads">Paid To Click Ads</option>
        <option value="banner_ads">Banner Ad</option>
        <option value="featured_ads">Featured Text Ads</option>
        <option value="featured_link">Featured Link Ads</option>
    </select>');

您可以像这样转义单引号:

echo('<select name="type"  onchange="(return location.href=''.?&amp;class=.''"+this.value;)"  ...

转义要作为字符串中文字的单引号。像这样:

echo('<select name="type"  onchange="(return location.href=''.?&amp;class=.''+this.value;)" id="manage_ads">
            <option value="ads">Paid To Click Ads</option>
            <option value="banner_ads">Banner Ad</option>
            <option value="featured_ads">Featured Text Ads</option>
            <option value="featured_link">Featured Link Ads</option>
        </select>');