0

ajax経由で「ul」html要素にデータを送信するPHPファイルがあります。

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

$data は、SQL から受け取った結果の php 配列です。そのため、データは多くの場合、10 個の異なる単語の配列になります。$value が 1 語の場合は問題なく動作します。たとえば、$value = word1 (1 語のみ、スペースなし) とします。

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

ただし、データが 2 つの単語の要素を持つ場合もあります。$value が 2 つの単語 (word1 word2)(fish sticks) の場合、「li id」は次のようになります。

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

「id」の word2(sauce) が引用符で囲まれていないことに注意してください。

どんな助けでも大歓迎です。

4

2 に答える 2

0

"IDを引用するために使用する必要があります。

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 に答える