0

我有一个 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

但是,偶尔 data while 有一个元素是两个单词。如果 $value 是两个单词 (word1 word2)(fish sticks),则 'li id' 变为:

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

注意'id' word2(sauce) 是如何不在引号内的。

任何帮助深表感谢。

4

2 回答 2

0

你需要"用来引用你的身份证。

echo '<li id="'.$value.'">'.$value.'</li>'
于 2013-07-25T01:10:16.253 回答
0

这是因为您没有引用您的 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));
}
于 2013-07-25T01:10:39.120 回答