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