1

我有一个脚本,它从 XML 文件加载项目并显示它们,因此用户可以选择要从文件中删除的项目。这是PHP:

<?php
global $current_user;
get_currentuserinfo();

$userid= $current_user->ID;

$dom = new DOMDocument;
$dom->load("playlists/$userid.xml");

echo '<div class="styled-select">';
echo '<center><form name="input" action="/remove/removesure.php" method="get">';
echo '<select name="q[]" size="2" multiple>';

$titles = $dom->getElementsByTagName('title');
foreach ($titles as $title) {

    echo '<option>'.$title->nodeValue.'</option>';
}
echo '</select>';
echo '<input type="submit" class="submit" value="Remove">';
echo '</form></center>';
echo '</div>';
?>

我遇到的问题是它没有正确显示一些对象,主要是带有连字符的项目(它显示 - 而不是 - )和最后带有空格的标题,因此,我的删除代码找不到该项目,因此无法删除它。我不知道该怎么做,也不知道为什么会这样。我正在 wordpress 中运行代码,如果这有什么不同的话。

有任何想法吗?

4

1 回答 1

0

如果没有任何并发​​的机会,我建议您使用标题标签的标题索引作为“选项”的值。例如:

$titles = $dom->getElementsByTagName('title');
$counter = 0;
foreach ($titles as $title) {
    echo '<option value='.$counter.' >'.$title->nodeValue.'</option>';
    $counter++;
}

在 removesure.php 中,您可以使用像下一个这样的 XPath 表达式来处理这个问题:

//Title[2]

其中“2”是必须删除的标题的索引。

这是一个可能的解决方案;您可以尝试遵循的另一条路径是处理空格,为您的标题提供最佳编码选项。htmlentity是您应该执行的功能

echo '<option>'.htmlentity($title->nodeValue).'</option>'
于 2013-09-30T18:58:27.077 回答