php foreach元素在<;id>;没有相互引用


php foreach elements when echoed in <id> are not quoted togther

我有一个PHP文件,它通过ajax将数据发送到'ul'html元素。

foreach ($data as $value) {
    echo '<li id='. $value .'>'.$value.'</li>';
}

$data是从SQL接收的结果的php数组。因此,数据通常是由10个不同单词组成的数组。当$value是一个单词时,它工作得很好。例如,假设$value=word1(只有一个单词,没有空格。)

    <li id='word1'>word1</li>        //this is correct

然而,偶尔数据while有一个元素是两个单词。如果$value是两个单词(单词1单词2)(鱼棒),则"li-id"变为:

<li id='fish' sticks> fish sticks</li> //this is wrong

注意"id"中的单词2(酱)不在引号内。

非常感谢您的帮助。

这是因为您没有引用HTML属性。此外,id属性中的空格也是无效的。您需要对该值进行规范化,以便在属性中使用。试试这个

function normaliseIdAttribute($id) {
    return htmlspecialchars(strtolower(preg_replace(
        '/'W+/', '-', $id)));
}
foreach ($data as $value) {
    printf('<li id="%s">%s</li>',
        normaliseIdAttribute($value),
        htmlspecialchars($value));
}

您需要使用"来引用您的id。

echo '<li id="'.$value.'">'.$value.'</li>'