Hi-Fi優質I.T網:PHP嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭嚙?forum_id=51-討論區
您尚未登入...
帳號:
密碼:

忘記密碼 
 
  訂閱電子報

取消   訂閱
 
討論區>>PHP嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭嚙?forum_id=51<<

 
 
發起人:
ruby
一般會員
張貼時間:2008/11/10-13:25:46
   檢舉

 主題:PHP+XML的程式教學 範例

<?php


  $file = "books.xml";
  $currentTag = "";
  $titleValue = "";    // title 元件的值
  $authorsValue = array();  // author 元件值的陣列
  $isbnValue = "";    // isbn 元件的值
  $priceValue = "";    // price 元件的值
  $currencyValue = "";    // book 元件的 currency 屬性值
  $descriptionValue = "";    // decription 本體參照的值
  $authorCount = 0;    // 用以設置 $authorsValue 陣列的變數
  $books = array();    // 包含書籍資訊



  function startElement($parser, $name, $attr) {
    global $currentTag, $currencyValue;


    $currentTag = $name;
    if (strcmp($name, "price") == 0)
      $currencyValue = $attr["currency"];
  }



  function endElement($parser, $name) {
    global  $titleValue, $authorsValue, $isbnValue, $priceValue;
    global  $currencyValue, $books, $authorCount, $descriptionValue;


    if (strcmp($name, "book") == 0) {
      $books[] = array(
        "title"    => $titleValue,
        "authors"  => $authorsValue,
        "isbn"    => $isbnValue,
        "price"    => $priceValue,
        "currency"  => $currencyValue,
        "description"  => $descriptionValue);


      $titleValue = "";
      $authorsValue = array();
      $isbnValue = "";
      $priceValue = "";
      $authorCount = 0;
      $currencyValue = "";
      $descriptionValue = "";
    } elseif (strcmp($name, "author") == 0) {
      $authorCount++;
      $authorsValue[$authorCount] = "";
    }
  }



  function characterData($parser, $data) {
    global  $titleValue, $authorsValue, $isbnValue;
    global  $priceValue, $currentTag, $authorCount;


    if (strcmp($currentTag, "title") == 0) {
      $titleValue .= $data;
    } elseif (strcmp($currentTag, "author") == 0) {
      $authorsValue[$authorCount] .= $data;
    } elseif (strcmp($currentTag, "isbn") == 0) {
      $isbnValue .= $data;
    } elseif (strcmp($currentTag, "price") == 0) {
      $priceValue .= $data;
    }
  }



  function externalEntityHandler($parser, $entityName, $base, $systemId, $publicId) {
    global  $descriptionValue;


    if (!$systemId)
      return false;
    $descriptionValue = $systemId;
    return true;
  }



  function readBookInfo() {
    global  $file, $books;


    $xml_parser = xml_parser_create();
    xml_set_element_handler($xml_parser, "startElement", "endElement");
    xml_set_character_data_handler($xml_parser, "characterData");
    xml_set_external_entity_ref_handler($xml_parser, "externalEntityHandler");
    xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, false);


    if (!($fp = fopen($file, "r"))) {
      die("無法開啟並讀取檔案");
    }


    while ($data = fread($fp, 4096)) {
      if (!xml_parse($xml_parser, $data, feof($fp))) {
        die(sprintf("XML 錯誤:第 %d 列、第 %d 行",
          xml_get_current_line_number($xml_parser),
          xml_get_current_column_number($xml_parser)));
      }
    }


    xml_parser_free($xml_parser);
    return $books;
  }



  function printBookInfo($titleValue, $authorsValue, $isbnValue, $priceValue, $currencyValue) {
    print "<TR>";
    print "<TD><A HREF="display_description.php?isbn=$isbnValue">$titleValue</A></TD>";
    print "<TD>";
    for ($j = 0; $j < count($authorsValue) - 1; $j++) {
      if ($j != 0)
        print ",";
      print " $authorsValue[$j] ";
    }
    print "</TD>";
    print "<TD NOWRAP>$isbnValue</TD>";
    print "<TD NOWRAP>$priceValue $currencyValue</TD>";
    print "</TR>";
  }



  function searchBookByISBN($books, $isbn) {
    for ($i = 0; $i < count($books); $i++) {
      if (strcmp(trim($books[$i]["isbn"]), trim($isbn)) == 0) {
        return $books[$i];
      }
    }
    return null;
  }


?>


簽名
By Ruby

 



 

Hi-Fi優質I.T網”站內所有文章、圖片除特別加註外均屬本站所有,如有任何問題請來信告知
請支持言論自由,討論區所發表之言論不代表本站立場
Hi-Fi優質I.T網”版權所有2004©
---最佳顯示效果1024*768---