使用php在解析的xml文件中创建动态URL

时间:2014-03-14 22:15:50

标签: php xml

我是php的新手。
我试图在每个描述中找到一种动态匹配正确URL的方法 例如,在 description = Xios 的情况下,我希望网址变为:
<li><div id="Left1"><a href="main.php?description=Xios">' . make_safe( $item['description'] ) . '</a></div></li>
现在,在 description = Kiklades 的情况下,我希望网址成为:<li><div id="Left1"><a href="main.php?description=Kiklades">' . make_safe( $item['description'] ) . '</a></div></li>
 在描述= Mikonos 的情况下,我希望网址成为:
    <li><div id="Left1"><a href="main.php?description=Mikonos">' . make_safe( $item['description'] ) . '</a></div></li>

foreach ($item_array as $item) {
            if ( make_safe($item['diamerisma']) == $_GET['diamerisma'] ) {
                if (!in_array($item['description'], $used_values) ) {//This will check if this value hasn't been listed yet
                    $html .= '<ul data-role="listview" id="weatherList" data-theme="b" data-insert="true" >';
                    $html .= '<li><div id="Left1"><a href="main.php?description=Κυκλάδες">' . make_safe( $item['description'] ) . '</a></div></li>';
                    $html .= '</ul>';
                    $html .= '</dd>';
                    $used_values[] = $item['description'];//here you preserve used values for avoiding repetition
                }
            }
        }

xml代码

    <item>
        <title>Xios center</title>
        <description>Xios</description>
        <diamerisma>Aigaio</diamerisma>
        <metar>1010</metar>
    </item>
    <item>
        <title>Siros</title>
        <description>Kiklades</description>
        <diamerisma>Aigaio</diamerisma>
        <metar>1011</metar>
    </item>
    <item>
        <title>Naxos center</title>
        <description>Kiklades</description>
        <diamerisma>Aigaio</diamerisma>
        <metar>1012</metar>
    </item>
    <item>
        <title>Mikonos center</title>
        <description>Mikonos</description>
        <diamerisma>Aigaio</diamerisma>
        <metar>1013</metar>
    </item>

任何帮助将不胜感激!先谢谢你们!

2 个答案:

答案 0 :(得分:0)

由于我不知道如何创建$item_array,我将从您的代码中退一步,以不同的方式创建$item_array

$xml = simplexml_load_string($x); // assume XML in $x
$dia = "Aigaio"; // use $_GET... in your code
$item_array = $xml->xpath("//item[diamerisma = '$dia']");

现在,$item_array仅包含<item> - 具有所需<diamerisma> - 子节点的节点。我们不必在循环中检查<diamerisma>

foreach ($item_array as $item) {

    // simplified
    echo '<a href="main.php?description=' . $item->description . '">' . $item->description . '</a>';    

}

看到它有效:https://eval.in/120611

答案 1 :(得分:0)

我意识到你的问题有一个非常简单的答案:

$html .= '<li><div id="Left1"><a href="main.php?description=' . make_safe($item['description']) . '">' . make_safe($item['description']) . '</a></div></li>';