2

HTMLファイルの生成方法は配列の長さphpに依存する

XMLファイルがあります。

<books>
  <book x="1" y="2">
     <name x="5" y="12">Java</name>
     <author x="8" y="16">Rao</author>
   </book>
   <book x="12" y="20">
     <name x="5" y="12">Php</name>
     <author x="5" y="12">Naidu</author>
   </book>
   <book x="19" y="29">
     <name x="25" y="22">Xml</name>
     <author x="25" y="12">Gowda</author>
   </book>
</books>

PHPで配列に変換しました。

標準のhtmlファイル、つまりテンプレートがあります。

<body>
  <div id="books" style="float:right; position:absolute; left: 199px; top: 245px;">
    <div id="book" style="float:right; position:absolute; left: 199px; top: 245px;">
    <div id="name" style="float:right; position:absolute; left: 199px; top: 245px;"></div>
    <div id="author" style="float:right; position:absolute; left: 199px; top: 245px;"></div>
     </div>
   </div>
</body>

配列の長さに基づいて、配列に存在する div 内の動的な値を持つこれらの多くの html ファイルを生成する必要があります。ここでは、3 つの html ファイルを生成する必要があります (3 つの book 要素があるため)。配列を使用して html ファイルを生成するにはどうすればよいですか。

配列は次のようになります。

Array
(
    [book] => Array
        (
            [0] => Array
                (
                    [name] => Java
                    [author] => Rao
                    [@attributes] => Array
                        (
                            [x] => 1
                            [y] => 2
                        )

                )

            [1] => Array
                (
                    [name] => Php
                    [author] => Naidu
                    [@attributes] => Array
                        (
                            [x] => 12
                            [y] => 20
                        )

                )

            [2] => Array
                (
                    [name] => Xml
                    [author] => Gowda
                    [@attributes] => Array
                        (
                            [x] => 19
                            [y] => 29
                        )

                )

        )

)
4

2 に答える 2

0

HTML テンプレートでは、 real-template のような区切り記号を使用します。

<body>
    <div id="books" style="float:right; position:absolute; left: 199px; top: 245px;">
        <div id="book" style="float:right; position:absolute; left: 199px; top: 245px;">
            <div id="name" style="float:right; position:absolute; left: 199px; top: 245px;">{name}</div>
            <div id="author" style="float:right; position:absolute; left: 199px; top: 245px;">{author}</div>
        </div>
    </div>
</body>

PHP 側では、regexp を使用してテンプレート内のデータを置き換えます。

        $html_template = file_get_contents('/path/to/your/html/template');

        foreach($books['book'] as $i => $book) {
            $file_name = "html_page_for_book_{$i}";
            $html_file = fopen($file_name,'w');

            $html_data = preg_replace(array('/{author}/','/{name}/'),array($book['author'],$book['name']),$html_template);
            fwrite($html_file,$html_data);

            fclose($html_file);

        }
于 2012-05-24T15:07:12.560 に答える
0

XML を解析して配列にできる人なら、これもできると思いますが、とにかく次のように説明します。

<body>
    <div id="books" style="float:right; position:absolute; left: 199px; top: 245px;">
        <?php foreach($books as $book) : ?>
        <div id="book" style="float:right; position:absolute; left: <?php echo $book['@attributes']['x']; ?>px; top: <?php echo $book['@attributes']['y']; ?>px;">
            <div id="name" style="float:right; position:absolute; left: 199px; top: 245px;"><?php echo $book['name']; ?></div>
            <div id="author" style="float:right; position:absolute; left: 199px; top: 245px;"><?php echo $book['author']; ?></div>
        </div>
        <?php endforeach; ?>
    </div>
</body>

ED|IT 本の x/y 属性を追加しました。あとは自分でできると思います

于 2012-05-24T14:58:30.667 に答える