php文件讀寫
Ⅰ php讀寫XML文件
library.xml:
<?xmlversion="1.0"encoding="gb2312"?>
<root>
<groups>
<groupgid="1">super</group>
<groupgid="2">admin</group>
<groupgid="3">change</group>
<groupgid="4">program</group>
</groups>
<users>
<user>
<name>Apache2</name>
<author>PeterWainwright</author>
<publisher>Wrox</publisher>
<group>1</group>
</user>
<user>
<name>AdvancedPHPProgramming</name>
<author>GeorgeSchlossnagle</author>
<publisher>DeveloperLibrary</publisher>
<group>1</group>
<group>3</group>
</user>
<user>
<name>VisualFoxPro6-ProgrammersGuide</name>
<author>EricStroo</author>
<publisher>Microsoftpress</publisher>
<group>2</group>
</user>
<user>
<name>MasteringJava2</name>
<author>JohnZukowski</author>
<publisher>Sybex</publisher>
<group>4</group>
</user>
</users>
</root>
/**********************************************/
readlibrary.php:
<?php
$xml=newDOMDocument('1.0');
$xml->load('library.xml');
$groups=array();
$XMLGroups=$xml->getElementsByTagName('groups')->item(0);
foreach($XMLGroups->getElementsByTagName('group')as$groupNode){
/*注意我們是如何得到屬性的*/
$gid=$groupNode->getAttribute('gid');
$groups[$gid]=$groupNode->firstChild->nodeValue;
}
?>
<html>
<head>
<title>XMLLibrary</title>
</head>
<body>
<?
foreach($xml->getElementsBytagName('user')as$user):
$name=$user->getElementsByTagName('name')->item(0)->firstChild->nodeValue;
$author=$user->getElementsByTagName('author')->item(0)->firstChild->nodeValue;
$userCategories=$user->getElementsByTagName('group');
$catList='';
foreach($userCategoriesas$category){
$catList.=$groups[$category->firstChild->nodeValue].',';
}
$catList=substr($catList,0,-2);?>
<!--
<div>
<h2><?phpecho($name)?></h2>
<b>Author:</b>:<?phpecho($author)?></br>
<b>group:</b>:<?phpecho($catList)?></br>
</div>
-->
<?php
//echo($name."-".$author."-".$catList."<br>\n");
echo($name."||".$catList."<br>\n");
endforeach;?>
</html>
Ⅱ php 讀寫文件和資料庫哪個快
1、直接讀文件相比資料庫查詢效率更勝一籌,而且文中還沒算上連接和斷開的時間。
2、一次讀取的內容越大,直接讀文件的優勢會越明顯(讀文件時間都是小幅增長,這跟文件存儲的連續性和簇大小等有關系),這個結果恰恰跟天緣預料的相反,說明MYSQL對更大文件讀取可能又附加了某些操作(兩次時間增長了近30%),如果只是單純的賦值轉換應該是差異偏小才對。
3、寫文件和INSERT幾乎不用測試就可以推測出,資料庫效率只會更差。
4、很小的配置文件如果不需要使用到資料庫特性,更加適合放到獨立文件里存取,無需單獨創建數據表或記錄,很大的文件比如圖片、音樂等採用文件存儲更為方便,只把路徑或縮略圖等索引信息放到資料庫里更合理一些。
5、PHP上如果只是讀文件,file_get_contents比fopen、fclose更有效率,不包括判斷存在這個函數時間會少3秒左右。
6、fetch_row和fetch_object應該是從fetch_array轉換而來的,我沒看過PHP的源碼,單從執行上就可以說明fetch_array效率更高,這跟網上的說法似乎相反。
Ⅲ PHP讀寫許可權問題,服務端可以隨意讀寫文件嗎
對於windows下的伺服器,一般就是對目錄做許可權限制,使得匿名訪問伺服器的用戶(就是普通用戶通過瀏覽器訪問伺服器)除了自家的網站目錄之外,對其他目錄沒有讀寫許可權。
對於linux下的伺服器,因為linux的伺服器比如apache等,是以apache這個用戶運行的,linux又有完善的許可權控制策略,對於系統文件(root用戶),其他用戶,除非這個文件或者文件夾對你有讀寫許可權,php才能操作。
當然沒這么簡單,在php的配置文件里還可以配置php能調用哪些對系統敏感的函數,比如列目錄,創建文件等。
未知用戶獲得許可權,就是說明你的網站被黑了么~哈哈
通過一些漏洞,hack拿到你網站的webshell,搞到你連接資料庫的用戶名密碼,那當然就是可以為所欲為了。
對於虛擬空間,php和ftp都有對整個目錄的操作許可權應該,(我沒用過虛擬空間),但是對於這個目錄的父目錄肯定沒許可權了。如果是自己搭建一個伺服器,你就會了解很多了。
慢慢自己會知道的,三兩句也說不清楚
Ⅳ PHP讀寫XML文件技巧
常用 如下 幾行
header("content type:text/; charset=utf "); //指定PHP使用UTF 編碼 $xml = simplexml_load_file("example xml"); //讀取xml文件 $newxml = $xml >雀明廳asXML(); //標准化$xml $fp = fopen("newxml xml" "w"); //新建xml文件 fwrite($fp $newxml); //寫入槐搏 xml文件 fclose($fp);
PHP可以方便的生成和讀取XML文件 PHP主要通過DOMDocument DOMElement和DOMNodeList來完成XML的讀取與寫入操作的 下面就簡要說明下如何使用這些類
一.生成XML文件 對於一個如下XML文件
[] <?xml version=" " encoding="UTF "?> <article> <title>PHP訪問MySql資料庫 初級篇</title> <link> </article> <?xml version=" " encoding="UTF "?> <article> <title>PHP訪問MySql資料庫 初級篇</title> <link> </article> 我們來看看如何用PHP來生成
首先new一個DOMDocument對象並設置編碼格式
$dom = newDOMDocument( UTF );
$dom >formatOutput= true;
再創建<article>結點和<title>結點
$rootelement =$dom >createElement("article");
$title =$dom >createElement("title" "PHP訪問MySql資料庫 初級篇");
然後創建帶文本內容的<link>結點
$link =$dom >createElement("link" "
也可以先生成<link>結點再為其添加文本內容
$link = $dom >createElement("link");
$linktext =$dom >createTextNode( );
$link >appendChild($linktext);
然後將<title>和<link>結點加入到<article>結點中去
$rootelement >appendChild($title);
$rootelement >appendChild($link);
最後將<article>結點加入到DOMDocument對象中
$dom >appendChild($rootelement);
這樣一個完整的XML就生成完畢了 再整出整個XML
echo $dom >saveXML() ;
saveXML()也可以只輸入部分XML文本 如echo $dom >saveXML($link);就只會輸出<link>結點 <link>
下面再給出一個完整的PHP中數據內容輸出到XML文件的例子頃隱 該例子會對將一個PHP數組輸出到XML文件中
[php] <?php //將數組輸出到XML文件中 // by MoreWindows( $article_array = array( "第一篇" => array( "title"=>"PHP訪問MySql資料庫 初級篇" "link"=>" ) "第二篇" => array( "title"=>"PHP訪問MySql資料庫 中級篇 Smarty技術" "link"=>" ) "第三篇" => array( "title"=>"PHP訪問MySql資料庫 高級篇 AJAX技術" "link"=>" ) ); $dom = new DOMDocument( UTF ); $dom >formatOutput = true; $rootelement = $dom >createElement("MoreWindows"); foreach ($article_array as $key=>$value) { $article = $dom >createElement("article" $key); $title = $dom >createElement("title" $value[ title ]); $link = $dom >createElement("link" $value[ link ]); $article >appendChild($title); $article >appendChild($link); $rootelement >appendChild($article);
} $dom >appendChild($rootelement); $filename = "D:test xml"; echo XML文件大小 $dom >save($filename) 位元組 ; ?> <?php //將數組輸出到XML文件中 // by MoreWindows( $article_array = array( "第一篇" => array( "title"=>"PHP訪問MySql資料庫 初級篇" "link"=>" ) "第二篇" => array( "title"=>"PHP訪問MySql資料庫 中級篇 Smarty技術" "link"=>" ) "第三篇" => array( "title"=>"PHP訪問MySql資料庫 高級篇 AJAX技術" "link"=>" ) ); $dom = new DOMDocument( UTF ); $dom >formatOutput = true; $rootelement = $dom >createElement("MoreWindows"); foreach ($article_array as $key=>$value) { $article = $dom >createElement("article" $key); $title = $dom >createElement("title" $value[ title ]); $link = $dom >createElement("link" $value[ link ]); $article >appendChild($title); $article >appendChild($link); $rootelement >appendChild($article); } $dom >appendChild($rootelement); $filename = "D:test xml"; echo XML文件大小 $dom >save($filename) 位元組 ; ?> 運行該PHP會在D盤上生成test xml文件(Win + XAMPP + IE 測試通過)
二.讀取XML文件 以讀取前文中生成的D:test xml為例
[php] <?php //讀取XML文件 // by MoreWindows( $filename = "D:test xml"; $article_array = array(); $dom = new DOMDocument( UTF ); $dom >load($filename); //得到<article>結點 $articles = $dom >getElementsByTagName("article"); echo <article> 結點個數 $articles >length; foreach ($articles as $article) { $id = $article >getElementsByTagName("id") >item( ) >nodeValue; $title = $article >getElementsByTagName("title") >item( ) >nodeValue; $link = $article >getElementsByTagName("link") >item( ) >nodeValue; $article_array[$id] = array( title =>$title link =>$link); } //輸出結果 echo "<pre>"; var_mp($article_array); echo "</pre>"; ?> <?php //讀取XML文件 // by MoreWindows( $filename = "D:test xml"; $article_array = array();
$dom = new DOMDocument( UTF ); $dom >load($filename);
//得到<article>結點 $articles = $dom >getElementsByTagName("article"); echo <article> 結點個數 $articles >length; foreach ($articles as $article) { $id = $article >getElementsByTagName("id") >item( ) >nodeValue; $title = $article >getElementsByTagName("title") >item( ) >nodeValue; $link = $article >getElementsByTagName("link") >item( ) >nodeValue; $article_array[$id] = array( title =>$title link =>$link); }
lishixin/Article/program/PHP/201311/20909