在php中使用xml文件创建动态选项标记

时间:2012-03-24 11:01:49

标签: php xml

我是网络开发的新手。我有一个php文件,例如addcourse.php。在这个文件中有一个代码块,形式如下:

<select name="instructor-id" id="instructor-id">
    <option >    </option>
</select>

使用此代码,用户必须选择一个教师向其添加课程。必须向用户显示指示符名称。我想从xml文件向选项标签添加元素.Xml文件有许多教师。(instructors.xml)教师那个用户可以看到选项标签必须来自这个instructors.xml文件。我试图在php标签中获取带有foreach的教师但后来我意识到选项标签在php标签中不起作用。我找了一个可以在html中工作的循环但我无法得到任何答案。解决这个问题的真正方法是什么?感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

在这里,您可以使用DOMDocument()类来获取所有节点值和属性值。

   <?php
    $xml = '<instructors> 
        <instructor instructorId="1">ozge yal</instructor> 
        <instructor instructorId="2">abd yal</instructor> 
        <instructor instructorId="3">anıl yal</instructor> 
        <instructor instructorId="4">gizem ort</instructor> 
        <instructor instructorId="5">bosluk</instructor> 
        <instructor instructorId="6">marry</instructor> 
        <instructor instructorId="7">john</instructor> 
        <instructor instructorId="8">jenny</instructor> 
        <instructor instructorId="9">tom</instructor> 
        <instructor instructorId="10">brad</instructor> 
    </instructors>';

    $dom = new DOMDocument();
    $dom->loadXML($xml);

    foreach ($dom->getElementsByTagName('instructors') as $taginstructors)
    {
        foreach ($taginstructors->getElementsByTagName('instructor') as $taginstructor)
        {
            $instructor_array[] = $taginstructor->nodeValue; 
            $instructorId_array[]=$taginstructor->getAttribute('instructorId');
        }
    }

    // Here $taganswer_array is an array, contained all the instructor options.
    ?>

    <!-- You can display like this. -->
    Select Instructor: 
    <select>
        <?php
            foreach($instructor_array as $key=> $val)
            {
                $id=$instructorId_array[$key];
                echo "<option value='$id'>".$val."</option>";
            }
        ?>
    </select>

答案 1 :(得分:0)

最简单的方法^^(无需使用simplexml解析它)

$fn = 'instructors.xml'; // your file
$x = fopen( $fn ,'r');
$str = fread( $x, filesize( $fn ));
fclose( $x );
$src = array( 'instructorId', '/instructors', 'instructors', 'instructor>', '<instructor' );
$rep = array( 'value', '/select', 'select name="instructor-id" id="instructor-id"', 'option>', '<option' );
$str = str_replace ( $src , $rep , $str );
echo $str;