2009年7月17日 星期五

NEW!!樹狀分類程式碼生產器 (網頁介面)

樹狀分類產生器


更新 : 新增網頁介面樹狀分類生產器,不用安裝PHP即可使用!!
更新 : 增加了帳號功能(提供紀錄功能,存入MYSQL),大家可以將自己的樹狀分類原始碼記錄下來,不過由於沒有密碼,請不要修改到別人的
TEST 帳號 : fqstory
請輸入 fqstory 然後按 read 即可知道

樹狀分類生產器 網頁介面

來用用看吧!!

===============源由===============
由於BLOG文章日益增加
但是GOOGLE blogger本身提供的"分類"
只能做大致上的分類
他只能提供一層的聯結
但是BLOG中的文章主題分類有很多
所以已經不夠使用,連自己都找不太到之前寫的文章
所以就上網找看看有沒有別人寫好的 "樹狀分類"
這樣才能夠快速找到所需要的文章

於是找阿找的...

終於在 finalevil's blog 發現了 "樹狀分類產生器"

他是用JAVA寫的基本上已經能滿足需求,而且能做到多層分類連結
(也應該支援大部分blog)

只是問題來了,如果有好多好多篇文章,每層每篇作連結都要加入好多語法
這樣實在很麻煩
雖然他finalevil's blog 裡面還有提供,自動產生語法的工具
但是發現還是不實用
第一、如果要新增加新的分層分類,之前打的都會不見
第二、如果日後要新增,那就要全部重來
所以最後決定自己寫一個程式碼產生器,方便自己使用

不過最後運行當然還是用他的 顆顆顆
至於最後呈現結果請看右邊的樹狀分類連結(目錄) 顆顆顆


============檔案輸入格式===============
t 為第一層樹狀分類 (可改)

c 為第二層樹狀分類 (可改)
p 為第三層樹狀分類 (可改)
| 為確定樹狀分類哪一層的分隔 (可改)
, 為分隔 "顯示樹狀分類名稱" ,"連結" , "註解" (可改)
; 為斷行,使程式讀取下一個分層 (可改)


==========最後呈現的格式如下==========
//這是此BLOG的目錄,結果如右邊最上方目錄
t|PHP先看,http://fq-story.blogspot.com/2009/05/php.html;
t|PHP基礎教學;
c|APACHE PHP MYSQL in WindowsXP 安裝教學,http://fq-story.blogspot.com/2009/05/phpini.html;
c|0.基本HTML語法,http://fq-story.blogspot.com/2009/05/html.html;
c|1.基本指令;
c|2.重複迴圈,http://fq-story.blogspot.com/2009/05/2.html;
c|3.判斷事件;
c|4.字串處理;
c|5.常用其他;
t|PHP實用文章;
c|0.PHP基礎須知;
p|0-a.PHP(簡介),http://fq-story.blogspot.com/2009/05/0-aphp.html;
p|0-b.PHP 安裝 (LINUX),http://fq-story.blogspot.com/2009/05/0-bphp-linux.html;
p|0-c.php.ini 配置詳細解說,http://fq-story.blogspot.com/2009/05/phpini_23.html;
c|1.PHP語法索引;
p|PHP函數語法索引,http://fq-story.blogspot.com/2009/07/php.html;
p|PHP MYSQL 函數語法與說明,http://fq-story.blogspot.com/2009/07/php-mysql.html;
c|2.PHP PLUG外掛;
p|Smarty;
t|PHP程序程式碼;
c|PHP資料處理相關;
p|HTML語法測試機;
p|利用php將ncbi的data存入自己的mysql中,http://fq-story.blogspot.com/2009/05/phpncbidatamysql.html;
p|樹狀分類程式碼產生器,http://fq-story.blogspot.com/2009/07/blog-post.html;
c|PHP與網路連線相關;
p|PHP CURL 發送 GET 和 POST 語法,http://fq-story.blogspot.com/2009/05/php-curl-get-post.html;
p|PHP 傳送GET使用fsockopen 取代CURL 取得回應,http://fq-story.blogspot.com/2009/05/php-getfsockopen-curl.html;
p|PHP 傳送POST使用fsockopen 取代CURL 取得回應,http://fq-story.blogspot.com/2009/05/php-postfsockopen-curl.html ;
p|PHP 自動更新進入yahoo 拍賣,http://fq-story.blogspot.com/2009/05/php-yahoo.html;
t|PHP Game;
c|RGP舊遊戲資料,http://fq-story.blogspot.com/2009/05/php-rpg-game.html;
p|index.php,http://fq-story.blogspot.com/2009/06/indexphp.html;
P|checkmap.php,http://fq-story.blogspot.com/2009/06/checkmapphp.html;
p|check.php,http://fq-story.blogspot.com/2009/06/checkphp.html;
p|charator.php,http://fq-story.blogspot.com/2009/06/charatorphp.html;
p|gmain.php,http://fq-story.blogspot.com/2009/05/gmainphp.html;
p|battling.php,http://fq-story.blogspot.com/2009/05/battlingphp.html;
p|battle.php,http://fq-story.blogspot.com/2009/05/battlephp.html;
c|GGAME;
t|C語言與C++;
c|C語言學習實錄,http://fq-story.blogspot.com/search/label/C%E8%AA%9E%E8%A8%80%E5%AD%B8%E7%BF%92%E5%AF%A6%E9%8C%84;
p|C語言學習實錄 起源,http://fq-story.blogspot.com/2009/07/c.html;
p|C語言學習實錄之一,http://fq-story.blogspot.com/2009/07/c_08.html;
p|C語言學習實錄之二,http://fq-story.blogspot.com/2009/07/c_09.html;
t|楓之谷,http://fq-story.blogspot.com/2009/06/blog-post.html;
t|BMP和JPEG圖檔格式
c|BMP 點陣圖(Bitmap)檔案格式,http://fq-story.blogspot.com/2009/06/bmp-bitmap.html;
c|JPG/JPEG 檔案格式,http://fq-story.blogspot.com/2009/06/jpgjpeg.html;
t|好用程式;
c|MSN將圖片畫出來,以手繪訊息送出去,http://fq-story.blogspot.com/search/label/MSN;



//ps 所以只要保留以上的格式,以後要增加或修改,都可以簡單使用
==========最後呈現的格式如上==========


這是兩層的 樹狀分類生產器 (java原程式碼 還是用finalevil的)
不過此php現在還沒有放到網路上,所以可能要在自己家弄弄瞜
以後會寫成比較完整方便的網頁
只用到:
t 為第一層樹狀分類 (可改)

c 為第二層樹狀分類 (可改)
ps 這是剛開始寫出來的,但發現兩層還是不夠用,所以下面又寫的一個三層的
所以註解就在下面"三層樹狀分類程式碼生產器"的地方寫

================================
兩層樹狀分類程式碼生產器,php程式碼開始
================================
<?php

$title = 't';

$content = 'c';


$star ='|';

$dis = ',';

$end = ';';

$string ='<p>

t|abc,cba;<br />

c|bbb,ccc;<br />

c|ccc,ddd;<br />

t|eee,fff;<br />

c|ccc,ddd;</p>';

$string = str_replace(" ", "",trim($string));

$string = str_replace("<p>", "",trim($string));

$string = str_replace("<br />", "",trim($string));

$string = str_replace("<br/>", "",trim($string));

$string = str_replace("<br>", "",trim($string));

echo $string;

$check = 1;

$string = explode($end,$string);

echo '<style>

ul.mktree li { list-style: none; }ul.mktree, ul.mktree ul , ul.mktree li { margin-left:10px; padding:0px; }ul.mktree li .bullet { padding-left: 15px; }ul.mktree li.liOpen .bullet { cursor: pointer; background: url(http://finalevillee.googlepages.com/minus.gif) center left no-repeat; }ul.mktree li.liClosed .bullet { cursor: pointer; background: url(http://finalevillee.googlepages.com/plus.gif) center left no-repeat; }ul.mktree li.liBullet .bullet { cursor: default; background: url(http://finalevillee.googlepages.com/bullet.gif) center left no-repeat; }ul.mktree li.liOpen ul { display: block; }ul.mktree li.liClosed ul { display: none; }ul.mktree li { font-size: 12pt; }ul.mktree li ul li { font-size: 10pt; }ul.mktree li ul li ul li { font-size: 8pt; }ul.mktree li ul li ul li ul li { font-size: 6pt; }</style>

<script src="http://finalevillee.googlepages.com/tree.js"></script>';

echo '<ul class="mktree">';

for($i=0;$i<count($string)-1;$i++){

$string[$i] = explode($star,$string[$i]);

$string[$i][0] = trim($string[$i][0]);

$string[$i][1] = explode($dis,$string[$i][1]);

if($string[$i][0] == $title and $check == 1){

$check =2;

echo '<li>';

echo '<a href="'.$string[$i][1][1].'">'.$string[$i][1][0].'</a>';

echo '<ul>';

}elseif($string[$i][0] == $content){

echo '<li><a href="'.$string[$i][1][1].'">'.$string[$i][1][0].'</a></li>';

}elseif($string[$i][0] == $title and $check != 1){

echo '</ul></li><li>';

echo '<a href="'.$string[$i][1][1].'">'.$string[$i][1][0].'</a>';

echo '<ul>';

}

}

echo '</ul></li></ul><script>convertTrees();</script>';

?>
//此程式沒測試過,請使用下面的(TEST OK)

================================
兩層樹狀分類程式碼生產器,php程式碼結束
================================


接下來是三層的樹狀分類程式碼生產器
"檔案輸入格式中" 都會用到



================================
三層樹狀分類程式碼生產器,php程式碼開始
================================


<?php

/*=====三層樹狀分類程式碼生產器,php程式碼=======*/

$string ='

t|PHP先看,http://fq-story.blogspot.com/2009/05/php.html;

t|PHP基礎教學;

c|APACHE PHP MYSQL in WindowsXP 安裝教學,http://fq-story.blogspot.com/2009/05/phpini.html;

c|0.基本HTML語法,http://fq-story.blogspot.com/2009/05/html.html;

c|1.基本指令;

c|2.重複迴圈,http://fq-story.blogspot.com/2009/05/2.html;

t|PHP實用文章;

c|0.PHP基礎須知;

p|0-a.PHP(簡介),http://fq-story.blogspot.com/2009/05/0-aphp.html;

p|0-b.PHP 安裝 (LINUX),http://fq-story.blogspot.com/2009/05/0-bphp-linux.html;

p|0-c.php.ini 配置詳細解說,http://fq-story.blogspot.com/2009/05/phpini_23.html;


';//將樹狀分類放上面

$string = str_replace(" ", "",trim($string)); //清除空白

$string = str_replace("<p>", "",trim($string)); //清除段落

$string = str_replace("<br />", "",trim($string)); //清除換行

$string = str_replace("<br/>", "",trim($string)); //清除換行

$string = str_replace("<br>", "",trim($string)); //清除換行

/*如果有需要請自行增加*/

$title = 't'; //第一層樹狀分類

$content = 'c'; //第二層樹狀分類

$ps = 'p'; //第三層樹狀分類

$star ='|'; //確定樹狀分類哪一層的分隔

$dis = ','; //為分隔 "顯示樹狀分類名稱" ,"連結" , "註解"

$end = ';'; //為斷行,使程式讀取下一個分層

echo $string;

$t= 1;

$c= 1;

$p= 1;

$string = explode($end,$string);

echo '<style>

ul.mktree li { list-style: none; }ul.mktree, ul.mktree ul , ul.mktree li { margin-left:10px; padding:0px; }ul.mktree li .bullet { padding-left: 15px; }ul.mktree li.liOpen .bullet { cursor: pointer; background: url(http://finalevillee.googlepages.com/minus.gif) center left no-repeat; }ul.mktree li.liClosed .bullet { cursor: pointer; background: url(http://finalevillee.googlepages.com/plus.gif) center left no-repeat; }ul.mktree li.liBullet .bullet { cursor: default; background: url(http://finalevillee.googlepages.com/bullet.gif) center left no-repeat; }ul.mktree li.liOpen ul { display: block; }ul.mktree li.liClosed ul { display: none; }ul.mktree li { font-size: 12pt; }ul.mktree li ul li { font-size: 10pt; }ul.mktree li ul li ul li { font-size: 8pt; }ul.mktree li ul li ul li ul li { font-size: 6pt; }</style>

<script src="http://finalevillee.googlepages.com/tree.js"></script>';

echo '<ul class="mktree">';

for($i=0;$i<count($string)-1;$i++){

$string[$i] = explode($star,$string[$i]);

$string[$i][0] = trim($string[$i][0]);

$string[$i][1] = explode($dis,$string[$i][1]);

if($string[$i][0] == $title and $t == 1){

$t =2;

echo '<li>';

echo '<a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a>';

}elseif($string[$i][0] == $content and $c ==1){

$c =2;

echo '<ul><li><a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a>';

}elseif($string[$i][0] == $content and $c ==2){

if($p ==1){

echo '</li><li><a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a>';

}elseif($p ==2){

$p =1;

echo '</ul></li><li><a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a>';

}

}elseif($string[$i][0] == $ps and $p ==1){

$p =2;

echo '<ul><li><a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a></li>';

}elseif($string[$i][0] == $ps and $p ==2){

echo '<li><a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a></li>';

}elseif($string[$i][0] == $title and $t == 2){

if($c ==2 and $p ==1){

$c =1;

echo '</li></ul><li>';

echo '<a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.$string[$i][1][0].'</a>';

}elseif($c ==2 and $p ==2){

$c =1;

$p =1;

echo '</ul></li></ul><li>';

echo '<a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.$string[$i][1][0].'</a>';

}elseif($c==1){

echo '</li><li>';

echo '<a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.$string[$i][1][0].'</a>';

}

}

}

echo '</ul></li></ul><script>convertTrees();</script>';

?>
==============================
三層樹狀分類程式碼生產器,php程式碼結束
==============================
如果覺得好用的話,歡迎分享!!


++不過好像只適用IE = =

======END======

2009年7月13日 星期一

搶先看!! 藥物設計 PHP讀取*.mol2藥物檔案,並且以3D結構圖形輸出

搶先看!! 藥物設計 PHP讀取*.mol2藥物檔案,並且以3D結構圖形輸出

這就是最近在研究的目標

最終目標就是用PHP寫出藥物設計DOCKING的程式出來

不過這個目標遠大

所以還是一步一步先來

首先第一個當然就是要讀取 LIGAND 和 PROTEIN 的檔案

並且能把3d圖形顯示出來

所以就先分析了一下普遍藥物LIGAND的檔案 *.mol2 檔

然後做出一些分析......

================待補齊==============

至於輸出結果為以下


寄件者 FQstory


寄件者 FQstory


Z軸為 以Z軸為不動 轉動XY平面

X軸為 以X軸為不動 轉動YZ平面

其他的就設定大小和出現位置

不過 當然 這是不能直接轉動的

因為他是PHP麻

他是以圖片輸出 然後顯示出來

=============程式碼==============

<?php

function readligand($name){

$checkprint = 0;

$i = 1;

$fp = fopen($name,"r");

$atom ='';

while(!feof($fp)){

$read = fgets($fp);

if(trim($read) == '@<TRIPOS>ATOM'){

$checkprint = 1;

}elseif(trim($read) == '@<TRIPOS>BOND'){

$checkprint = 2;

$i =1;

}elseif($checkprint > 0){

$atoms ='';

$atom = explode(" ",$read);

for($j=0;$j<count($atom);$j++){ //去除多個空白只留一個

if($atom[$j] != ''){

$atoms = $atoms.' '.$atom[$j];

}

}



$atomr[$checkprint][$i] = explode(" ",$atoms);

if($checkprint == 1){

$atomr[$checkprint][$i][3] = $atomr[$checkprint][$i][3];

$atomr[$checkprint][$i][4] = $atomr[$checkprint][$i][4];

$atomr[$checkprint][$i][5] = $atomr[$checkprint][$i][4];

//$atomr[$checkprint][$i][5] = $atomr[$checkprint][$i][5]*50+400;

}

//echo chop($read)."<br>";

$i++;

}

}

fclose($fp);

return $atomr;

}



function change($x,$y,$z,$xp,$em,$move,$theta,$phi,$turny){

//$r = sqrt($x*$x+$y*$y+$z*$z);

$theta = $theta/180*3.14;

$phi = $phi/180*3.14;

//轉Z軸

$new['x'] = $x*cos($theta)-$y*sin($theta);

$new['y'] = $x*sin($theta)+$y*cos($theta);

$new['z'] = $z;

//轉X軸

$new['x'] = $new['x'];

$new['y'] = $new['y']*cos($phi)+$new['z']*sin($phi);

$new['z'] = $new['y']*sin($phi)+$new['z']*cos($phi);

//轉Y軸

$new['x'] = $new['x']*cos($turny)+$new['z']*sin($turny);

$new['y'] = $new['y'];

$new['z'] = $new['x']*sin($turny)-$new['z']*cos($turny);

$new['x'] = $new['x']*$em+$xp/$move;

$new['y'] = $new['y']*$em+$xp/$move;

//$new['z'] = $new['z']*$xp/$em+$xp/$move;

//$new['x'] = $x*$xp/$em+$xp/$move;

//$new['y'] = $y*$xp/$em+$xp/$move;

return $new;

}



if(@$_POST['show'] == "SHOW"){

$filename = $_POST['filename'];

$theta = $_POST['theta'];

$phi =$_POST['phi'];

$turny =$_POST['turny'];

$em = $_POST['em'];//LIGAND大小,越小越大

$move = $_POST['move'];//離邊界位置 , 預設2

$xp = $_POST['xp'];//圖檔邊長(正方)



// 1.建立新影像

$im = imagecreate($xp,$xp);

// 2. 定義白色顏色的 RGB (背景顏色)

$white = imagecolorallocate($im, 255, 255, 255);

// 3. 定義黑色的 RGB (線的顏色)

$black = imagecolorallocate($im, 0, 0, 0);

$atomr = readligand($filename);//atomsread

for($i =1;$i<=count($atomr[1]);$i++){

$x = $atomr[1][$i][3];

$y = $atomr[1][$i][4];

$z = $atomr[1][$i][5];

$f = $atomr[2][$i][2];//讀取BOND

$l = $atomr[2][$i][3];//讀取BOND

$x1 = $atomr[1][$f][3];

$y1 = $atomr[1][$f][4];

$z1 = $atomr[1][$f][5];

$x2 = $atomr[1][$l][3];

$y2 = $atomr[1][$l][4];

$z2 = $atomr[1][$l][5];

$new = change($x,$y,$z,$xp,$em,$move,$theta,$phi,$turny);//dot

$newf = change($x1,$y1,$z1,$xp,$em,$move,$theta,$phi,$turny);//bond

$newl = change($x2,$y2,$z2,$xp,$em,$move,$theta,$phi,$turny);

imageline($im, $newf['x'], $newf['y'], $newl['x'], $newl['y'], $black);// 4. 開始畫線

imagesetpixel ($im,$new['x'],$new['y'],$black);//畫點

}



// 5. 做成 png 圖檔並輸出

imagejpeg($im, "draw.jpg");

// 6. 完成後將圖檔毀滅

imagedestroy($im);

echo '<img src="draw.jpg" width="'.$xp.'" height="'.$xp.'" />';

}

?>



<form id="form1" name="form1" method="post" action="readligand.php">

<p>檔案名稱:

<input name="filename" type="text" id="filename" value="<?php echo @$_POST['filename'];?>" />

<input type="submit" name="show" id="show" value="SHOW" />

</p>

<p>Z軸:

<input name="theta" type="text" id="theta" value="<?php echo @$_POST['theta'];?>" />

</p>

<p>X軸:

<input name="phi" type="text" id="phi" value="<?php echo @$_POST['phi'];?>" />

</p>

<p>Y軸:

<input name="turny" type="text" id="turny" value="<?php echo @$_POST['turny'];?>" />

</p>

<p>LIGAND SIZE:

<input name="em" type="text" id="em" value="<?php echo @$_POST['em'];?>" />

</p>

<p>邊界:

<input name="move" type="text" id="move" value="<?php echo @$_POST['move'];?>" />

預設2,為圖中心</p>

<p>檔案邊界(像素):

<input name="xp" type="text" id="xp" value="400" />

</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

</form>

已輸出至 <a href="../draw.jpg">draw.jpg</a>


=============程式碼==============

實際測試結果好像有點怪怪的
但又不知道哪邊怪怪的

================END==================

2009年7月11日 星期六

t|PHP先看
t|PHP基礎教學
c|APACHE PHP MYSQL in WindowsXP 安裝教學
c|0.基本HTML語法
c|1.基本指令
c|2.重複迴圈
c|3.判斷事件
c|4.字串處理
c|5.常用其他
t|PHP實用文章
c|0.PHP基礎須知
p|0-a.PHP(簡介)
p|0-b.PHP 安裝 (LINUX)
p|0-c.php.ini 配置詳細解說
c|1.PHP語法索引
p|PHP函數語法索引,http://fq-story.blogspot.com/2009/07/php.html
p|PHP MYSQL 函數語法與說明,http://fq-story.blogspot.com/2009/07/php-mysql.html
c|2.PHP PLUG外掛
p|Smarty

t|PHP程序程式碼
c|PHP資料處理相關
p|HTML語法測試機
p|利用php將ncbi的data存入自己的mysql中
p|樹狀分類程式碼產生器,http://fq-story.blogspot.com/2009/07/blog-post.html
c|PHP與網路連線相關
p|PHP CURL 發送 GET 和 POST 語法
p|PHP 傳送GET使用fsockopen 取代CURL 取得回應
p|PHP 傳送POST使用fsockopen 取代CURL 取得回應
p|PHP 自動更新進入yahoo 拍賣
t|PHP Game
c|RGP舊遊戲資料
c|GGAME
t|C語言與C++
c|C語言學習實錄
p|C語言學習實錄 起源,http://fq-story.blogspot.com/2009/07/c.html
p|C語言學習實錄之一,http://fq-story.blogspot.com/2009/07/c_08.html
p|C語言學習實錄之二,http://fq-story.blogspot.com/2009/07/c_09.html
t|楓之谷,http://fq-story.blogspot.com/2009/06/blog-post.html

2009年7月10日 星期五

樹狀分類產程式碼生器

樹狀分類產生器

已經有網頁介面了
請網新的頁面看
===============源由===============
由於BLOG文章日益增加
但是GOOGLE blogger本身提供的"分類"
只能做大致上的分類
他只能提供一層的聯結
但是BLOG中的文章主題分類有很多
所以已經不夠使用,連自己都找不太到之前寫的文章
所以就上網找看看有沒有別人寫好的 "樹狀分類"
這樣才能夠快速找到所需要的文章
於是找阿找的...
終於在 finalevil's blog 發現了 "樹狀分類產生器"
他是用JAVA寫的基本上已經能滿足需求,而且能做到多層分類連結
(也應該支援大部分blog)
只是問題來了,如果有好多好多篇文章,每層每篇作連結都要加入好多語法
這樣實在很麻煩
雖然他finalevil's blog 裡面還有提供,自動產生語法的工具
但是發現還是不實用
第一、如果要新增加新的分層分類,之前打的都會不見
第二、如果日後要新增,那就要全部重來
所以最後決定自己寫一個程式碼產生器,方便自己使用
不過最後運行當然還是用他的 顆顆顆
至於最後呈現結果請看右邊的樹狀分類連結(目錄) 顆顆顆

============檔案輸入格式===============
t 為第一層樹狀分類 (可改)
c 為第二層樹狀分類 (可改)
p 為第三層樹狀分類 (可改)
| 為確定樹狀分類哪一層的分隔 (可改)
, 為分隔 "顯示樹狀分類名稱" ,"連結" , "註解" (可改)
; 為斷行,使程式讀取下一個分層 (可改)

==========最後呈現的格式如下==========
//這是此BLOG的目錄,結果如右邊最上方目錄

t|PHP先看,http://fq-story.blogspot.com/2009/05/php.html;
t|PHP基礎教學;
c|APACHE PHP MYSQL in WindowsXP 安裝教學,http://fq-story.blogspot.com/2009/05/phpini.html;
c|0.基本HTML語法,http://fq-story.blogspot.com/2009/05/html.html;
c|1.基本指令;
c|2.重複迴圈,http://fq-story.blogspot.com/2009/05/2.html;
c|3.判斷事件;
c|4.字串處理;
c|5.常用其他;
t|PHP實用文章;
c|0.PHP基礎須知;
p|0-a.PHP(簡介),http://fq-story.blogspot.com/2009/05/0-aphp.html;
p|0-b.PHP 安裝 (LINUX),http://fq-story.blogspot.com/2009/05/0-bphp-linux.html;
p|0-c.php.ini 配置詳細解說,http://fq-story.blogspot.com/2009/05/phpini_23.html;
c|1.PHP語法索引;
p|PHP函數語法索引,http://fq-story.blogspot.com/2009/07/php.html;
p|PHP MYSQL 函數語法與說明,http://fq-story.blogspot.com/2009/07/php-mysql.html;
c|2.PHP PLUG外掛;
p|Smarty;
t|PHP程序程式碼;
c|PHP資料處理相關;
p|HTML語法測試機;
p|利用php將ncbi的data存入自己的mysql中,http://fq-story.blogspot.com/2009/05/phpncbidatamysql.html;
p|樹狀分類程式碼產生器,http://fq-story.blogspot.com/2009/07/blog-post.html;
c|PHP與網路連線相關;
p|PHP CURL 發送 GET 和 POST 語法,http://fq-story.blogspot.com/2009/05/php-curl-get-post.html;
p|PHP 傳送GET使用fsockopen 取代CURL 取得回應,http://fq-story.blogspot.com/2009/05/php-getfsockopen-curl.html;
p|PHP 傳送POST使用fsockopen 取代CURL 取得回應,http://fq-story.blogspot.com/2009/05/php-postfsockopen-curl.html ;
p|PHP 自動更新進入yahoo 拍賣,http://fq-story.blogspot.com/2009/05/php-yahoo.html;
t|PHP Game;
c|RGP舊遊戲資料,http://fq-story.blogspot.com/2009/05/php-rpg-game.html;
p|index.php,http://fq-story.blogspot.com/2009/06/indexphp.html;
P|checkmap.php,http://fq-story.blogspot.com/2009/06/checkmapphp.html;
p|check.php,http://fq-story.blogspot.com/2009/06/checkphp.html;
p|charator.php,http://fq-story.blogspot.com/2009/06/charatorphp.html;
p|gmain.php,http://fq-story.blogspot.com/2009/05/gmainphp.html;
p|battling.php,http://fq-story.blogspot.com/2009/05/battlingphp.html;
p|battle.php,http://fq-story.blogspot.com/2009/05/battlephp.html;
c|GGAME;
t|C語言與C++;
c|C語言學習實錄,http://fq-story.blogspot.com/search/label/C%E8%AA%9E%E8%A8%80%E5%AD%B8%E7%BF%92%E5%AF%A6%E9%8C%84;
p|C語言學習實錄 起源,http://fq-story.blogspot.com/2009/07/c.html;
p|C語言學習實錄之一,http://fq-story.blogspot.com/2009/07/c_08.html;
p|C語言學習實錄之二,http://fq-story.blogspot.com/2009/07/c_09.html;
t|楓之谷,http://fq-story.blogspot.com/2009/06/blog-post.html;
t|BMP和JPEG圖檔格式
c|BMP 點陣圖(Bitmap)檔案格式,http://fq-story.blogspot.com/2009/06/bmp-bitmap.html;
c|JPG/JPEG 檔案格式,http://fq-story.blogspot.com/2009/06/jpgjpeg.html;
t|好用程式;
c|MSN將圖片畫出來,以手繪訊息送出去,http://fq-story.blogspot.com/search/label/MSN;

//ps 所以只要保留以上的格式,以後要增加或修改,都可以簡單使用
==========最後呈現的格式如上==========

這是兩層的 樹狀分類生產器 (java原程式碼 還是用finalevil的)
不過此php現在還沒有放到網路上,所以可能要在自己家弄弄瞜
以後會寫成比較完整方便的網頁
只用到:
t 為第一層樹狀分類 (可改)
c 為第二層樹狀分類 (可改)
ps 這是剛開始寫出來的,但發現兩層還是不夠用,所以下面又寫的一個三層的
所以註解就在下面"三層樹狀分類程式碼生產器"的地方寫
================================
兩層樹狀分類程式碼生產器,php程式碼開始
================================
<?php

$title = 't';

$content = 'c';


$star ='|';

$dis = ',';

$end = ';';

$string ='<p>

t|abc,cba;<br />

c|bbb,ccc;<br />

c|ccc,ddd;<br />

t|eee,fff;<br />

c|ccc,ddd;</p>';

$string = str_replace(" ", "",trim($string));

$string = str_replace("<p>", "",trim($string));

$string = str_replace("<br />", "",trim($string));

$string = str_replace("<br/>", "",trim($string));

$string = str_replace("<br>", "",trim($string));

echo $string;

$check = 1;

$string = explode($end,$string);

echo '<style>

ul.mktree li { list-style: none; }ul.mktree, ul.mktree ul , ul.mktree li { margin-left:10px; padding:0px; }ul.mktree li .bullet { padding-left: 15px; }ul.mktree li.liOpen .bullet { cursor: pointer; background: url(http://finalevillee.googlepages.com/minus.gif) center left no-repeat; }ul.mktree li.liClosed .bullet { cursor: pointer; background: url(http://finalevillee.googlepages.com/plus.gif) center left no-repeat; }ul.mktree li.liBullet .bullet { cursor: default; background: url(http://finalevillee.googlepages.com/bullet.gif) center left no-repeat; }ul.mktree li.liOpen ul { display: block; }ul.mktree li.liClosed ul { display: none; }ul.mktree li { font-size: 12pt; }ul.mktree li ul li { font-size: 10pt; }ul.mktree li ul li ul li { font-size: 8pt; }ul.mktree li ul li ul li ul li { font-size: 6pt; }</style>

<script src="http://finalevillee.googlepages.com/tree.js"></script>';

echo '<ul class="mktree">';

for($i=0;$i<count($string)-1;$i++){

$string[$i] = explode($star,$string[$i]);

$string[$i][0] = trim($string[$i][0]);

$string[$i][1] = explode($dis,$string[$i][1]);

if($string[$i][0] == $title and $check == 1){

$check =2;

echo '<li>';

echo '<a href="'.$string[$i][1][1].'">'.$string[$i][1][0].'</a>';

echo '<ul>';

}elseif($string[$i][0] == $content){

echo '<li><a href="'.$string[$i][1][1].'">'.$string[$i][1][0].'</a></li>';

}elseif($string[$i][0] == $title and $check != 1){

echo '</ul></li><li>';

echo '<a href="'.$string[$i][1][1].'">'.$string[$i][1][0].'</a>';

echo '<ul>';

}

}

echo '</ul></li></ul><script>convertTrees();</script>';

?>
//此程式沒測試過,請使用下面的(TEST OK)
================================
兩層樹狀分類程式碼生產器,php程式碼結束
================================

接下來是三層的樹狀分類程式碼生產器
"檔案輸入格式中" 都會用到

================================
三層樹狀分類程式碼生產器,php程式碼開始
================================

<?php

/*=====三層樹狀分類程式碼生產器,php程式碼=======*/

$string ='

t|PHP先看,http://fq-story.blogspot.com/2009/05/php.html;

t|PHP基礎教學;

c|APACHE PHP MYSQL in WindowsXP 安裝教學,http://fq-story.blogspot.com/2009/05/phpini.html;

c|0.基本HTML語法,http://fq-story.blogspot.com/2009/05/html.html;

c|1.基本指令;

c|2.重複迴圈,http://fq-story.blogspot.com/2009/05/2.html;

t|PHP實用文章;

c|0.PHP基礎須知;

p|0-a.PHP(簡介),http://fq-story.blogspot.com/2009/05/0-aphp.html;

p|0-b.PHP 安裝 (LINUX),http://fq-story.blogspot.com/2009/05/0-bphp-linux.html;

p|0-c.php.ini 配置詳細解說,http://fq-story.blogspot.com/2009/05/phpini_23.html;
';//將樹狀分類放上面

$string = str_replace(" ", "",trim($string)); //清除空白

$string = str_replace("<p>", "",trim($string)); //清除段落

$string = str_replace("<br />", "",trim($string)); //清除換行

$string = str_replace("<br/>", "",trim($string)); //清除換行

$string = str_replace("<br>", "",trim($string)); //清除換行

/*如果有需要請自行增加*/

$title = 't'; //第一層樹狀分類

$content = 'c'; //第二層樹狀分類

$ps = 'p'; //第三層樹狀分類

$star ='|'; //確定樹狀分類哪一層的分隔

$dis = ','; //為分隔 "顯示樹狀分類名稱" ,"連結" , "註解"

$end = ';'; //為斷行,使程式讀取下一個分層

echo $string;

$t= 1;

$c= 1;

$p= 1;

$string = explode($end,$string);

echo '<style>

ul.mktree li { list-style: none; }ul.mktree, ul.mktree ul , ul.mktree li { margin-left:10px; padding:0px; }ul.mktree li .bullet { padding-left: 15px; }ul.mktree li.liOpen .bullet { cursor: pointer; background: url(http://finalevillee.googlepages.com/minus.gif) center left no-repeat; }ul.mktree li.liClosed .bullet { cursor: pointer; background: url(http://finalevillee.googlepages.com/plus.gif) center left no-repeat; }ul.mktree li.liBullet .bullet { cursor: default; background: url(http://finalevillee.googlepages.com/bullet.gif) center left no-repeat; }ul.mktree li.liOpen ul { display: block; }ul.mktree li.liClosed ul { display: none; }ul.mktree li { font-size: 12pt; }ul.mktree li ul li { font-size: 10pt; }ul.mktree li ul li ul li { font-size: 8pt; }ul.mktree li ul li ul li ul li { font-size: 6pt; }</style>

<script src="http://finalevillee.googlepages.com/tree.js"></script>';

echo '<ul class="mktree">';

for($i=0;$i<count($string)-1;$i++){

$string[$i] = explode($star,$string[$i]);

$string[$i][0] = trim($string[$i][0]);

$string[$i][1] = explode($dis,$string[$i][1]);

if($string[$i][0] == $title and $t == 1){

$t =2;

echo '<li>';

echo '<a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a>';

}elseif($string[$i][0] == $content and $c ==1){

$c =2;

echo '<ul><li><a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a>';

}elseif($string[$i][0] == $content and $c ==2){

if($p ==1){

echo '</li><li><a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a>';

}elseif($p ==2){

$p =1;

echo '</ul></li><li><a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a>';

}

}elseif($string[$i][0] == $ps and $p ==1){

$p =2;

echo '<ul><li><a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a></li>';

}elseif($string[$i][0] == $ps and $p ==2){

echo '<li><a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a></li>';

}elseif($string[$i][0] == $title and $t == 2){

if($c ==2 and $p ==1){

$c =1;

echo '</li></ul><li>';

echo '<a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.$string[$i][1][0].'</a>';

}elseif($c ==2 and $p ==2){

$c =1;

$p =1;

echo '</ul></li></ul><li>';

echo '<a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.$string[$i][1][0].'</a>';

}elseif($c==1){

echo '</li><li>';

echo '<a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.$string[$i][1][0].'</a>';

}

}

}

echo '</ul></li></ul><script>convertTrees();</script>';

?>

==============================
三層樹狀分類程式碼生產器,php程式碼結束
==============================

2009年7月9日 星期四

C語言學習實錄之二

C語言學習實錄之二
(第二次上課)

第二次上課

終於慢慢切入了最重要的地方了

就是重複迴圈 for() while() 等等

在c語言中這些用法都和php差不多(別的語法也是...)

所以還蠻容易上手的

= =

首先就是for()迴圈的應用

for(起始值;判斷值是否進行;每次判斷值得改變){
do something
}

接下來是範例,要算出階層 就是 "!"

不過在這邊要注意的是,由於宣告的最後放結果的a,的長度只有31位元,正整數只能存放15位元
,所以如果輸入太大,則會出現"溢位"。

ex2-1

#include
#include
int main(void){
int i,a=1,n;
printf("請輸入皆層\n");
scanf ("%d",&n);
for(i=1;i<=n;i++){ //i起始值為一,每執行一次就加一,直到>n停止
a = a*i;
}
printf("=%d\n",a);
system("pause");
return 0;
}

接下來當然就是for()迴圈加強版摟!!

這邊主要差是在一次跳兩個數字,就變成偶數

ex 2-2

#include
#include
int main(void){
int i,a=0,n;
printf("請輸入偶數連加的最終值\n");
scanf("%d",&n);
for(i=2;i<=n;i=i+2){
a=a+i;
}
printf("%d\n",a);
system("pause");
return 0;
}


for()迴圈其實就差不多就這樣

如果想更詳細了解的話可以參考 php重複迴圈

for()迴圈基本上是大同小異,不過在寫法上還是有些差異


接下來就進入下一個主題

while()迴圈

這邊同樣可以參考 php重複迴圈

這個範例就直接是while()迴圈較深入的範例,用了兩個迴圈(當初就寫在一起了,忘了分開)

第一個是可以重複執行

第二個就是要計算所有整數的和

這邊有多一個指令 system("cls") 就是每執行一次就清除螢幕



ex2-3

#include
#include
int main(void){
int i,s,n;
char f='y'; // 宣告字元 f = 'y'
while(f == 'y' || f == 'Y') // 由於上述 所以可以執行以下
{
int i=1;s=0; //這邊要將i s 歸位,否則會錯誤(迴圈的變數值會保留,所以要重設)
printf("求1~N所有整數之和\n");
scanf("%d",&n);
while(i<=n) //第二個迴圈,用來計算
{
s=s+i;
i++;
}
printf("1~%d所有和為%d\n",n,s);
printf("如果繼續請案y\n");
scanf(" %c",&f); //輸入值給f,如果不是 'y' or 'Y' 則第一個while()不會繼續執行
//這邊在設定 %c時,前面要加一個空白,是告訴c,把"\n"(換行)清除掉,(c預設有換行)
system("cls");
}
system("pause");
return 0;
}



------------------------------------------------
本人將會把在巨匠學的程式範例和一些重點 PO 上來

放在"C語言學習實錄"分類

供大家參考

此次暑假預計學習的有

C++ 初階 (其實還是C語言)
C++ 進階
C++ 物件導向

歡迎大家觀賞 (顆顆)

也當作自己的學習紀錄吧!!
------------------------------------------------

2009年7月8日 星期三

C語言學習實錄之一

C語言學習實錄之一
(第一次上課)

當然學習程式語言第一步驟當然

就是安裝相關程式

此次課程使用的是 DEV C++ (免費的搜尋一下就下載的到)
點我進入官方下載網頁

安裝好後呢

就是先確定
是否安裝成功?
可否使用?

SO 老套的 當然就是先輸出 "HELLO WORLD!!" (顆顆)
此次使用了
printf 輸出在螢幕
system 系統相關

ex1-1

#include //引入檔(和PHP不同),要使用哪些語法就必須引用那些引入檔
#include //system語法用
int main(void)
{
printf("Hello,C!\n"); //輸出
printf("Hello,World!\n");
system("pause"); //程式暫停 (沒輸入的話視窗執行完就跳掉)
return 0; //無實質意義,只是表示檔案成功執行完畢(可有可無)
}


接下來就是HELLO WORLD 進階版(顆顆)
就是要輸入名子然後 HELLO!!
此次增加了

宣告變數
int 宣告為整數
char 宣告為字元

變數代數 %x
%c 為字元
%d 為十進位

ex1-2

#include
#include
int main(void){
int y=10; //宣告變數整數y 且值為10
char name; //宣告字元name
printf("please enter your name\n");
scanf("%c",&name); //scanf為讓使用者輸入東西,並存入name中('&'要加,%c字元)
printf("please enter your age\n");
scanf("%d",&y);//%d 輸入十進位
printf("HELLO !!\n大家好\n");
printf("我是%c\n今年%d歲\n",name,y); //(這邊不用'&')
system("pause");
return 0;
}

= =
接下來呢
就是在整合入 運算的部分

ex1-3

#include
#include
int main(void){
int n1,n2,s;
/*注解
printf("請輸入被加數\n");
scanf("%d",&n1);
printf("請輸入加數\n");
scanf("%d",&n2);
s = n1+n2;
printf("%d+%d=%d\n",n1,n2,s);
p.s此段較複雜,下段較簡潔
*/
printf("請輸入被加數與加數,並請以豆號隔開\n");
scanf("%d,%d",&n1,&n2); //輸入的時候必須符合""之間的格式
printf("%d+%d=%d\n",n1,n2,n1+n2);

system("pause");
return 0;
}


此次課程最後就是較複雜的運算
加入了小數的部分

宣告變數
double 為小數

變數代數 %x
%f 小數


ex1-4

#include
#include
int main(void)
{
int f;
double c; //宣告為小數c (float也可,差在記憶體大小)
printf("please enter F\n");
scanf("%d",&f);
c = (f-32)*5/(double) 9;
/*
p.s
(double) 9 為宣告9為小數,(隨便挑一個宣靠為小數即可)

在c語言中,整數間運算的結果還是整數
如果不加入(double) 那最後的c值會是 xx.0000 小數部分為0
*/
printf("C is %.2f \n",c); //%f為小數,%2.4f表示只顯示小數點前兩位,小數點後四位
system("pause");
return 0;

}

此次課程結束

homework
1.寫出兩數相減
2.寫出bmi計算,輸入身高(cm) 體重(kg) (整數)



hw1-1 寫出兩數相減

#include
#include
int main(void){
int a,b;
printf("請輸入被減數\n");
scanf("%d",&a);
printf("請輸入減數\n");
scanf("%d",&b);
printf("%d-%d=%d\n",a,b,a-b);
system("pause");
return 0;
}



hw1-2 寫出bmi計算,輸入身高(cm) 體重(kg) (整數)

#include
#include
int main(void){
int cm,kg;
double bmi;
printf("請輸入身高(cm)\n");
scanf("%d",&cm);
printf("請輸入體重(kg)\n");
scanf("%d",&kg);
bmi = (kg*(double)10000)/(cm*cm);
printf("您的身高為%d,體重為%d,BMI值為%.2f\n",cm,kg,bmi);
system("pause");
return 0;
}

2009年7月7日 星期二

PHP MYSQL 函數語法與說明

PHP MYSQL 函數語法與說明

PHP MySQL 數據庫函數庫
作者:DDVIP

==========================================

本函數庫供存取 MySQL 數據庫。有關 MySQL 的細節,及下載 MySQL 數據庫,請到這個網址 http://www.mysql.com 。而網絡上也有許多提供處理 MySQL 的用戶界面程序,建議到 http://www.phpwizard.net/phpMyAdmin 下載 phpMyAdmin,可以使用瀏覽器操作及管理 MySQL。



mysql_affected_rows: 得到 MySQL 最後操作影響的列數目。
mysql_close: 關閉 MySQL 服務器連接。
mysql_connect: 打開 MySQL 服務器連接。
mysql_create_db: 建立一個 MySQL 新數據庫。
mysql_data_seek: 移動內部返回指針。
mysql_db_query: 送查詢字符串 (query) 到 MySQL 數據庫。
mysql_drop_db: 移除數據庫。
mysql_errno: 返回錯誤信息代碼。
mysql_error: 返回錯誤信息。
mysql_fetch_array: 返回數組資料。
mysql_fetch_field: 取得字段信息。
mysql_fetch_lengths: 返回單列各欄資料最大長度。
mysql_fetch_object: 返回類資料。
mysql_fetch_row: 返回單列的各字段。
mysql_field_name: 返回指定字段的名稱。
mysql_field_seek: 配置指針到返回值的某字段。
mysql_field_table: 獲得目前字段的資料表 (table) 名稱。
mysql_field_type: 獲得目前字段的類型。
mysql_field_flags: 獲得目前字段的標誌。
mysql_field_len: 獲得目前字段的長度。
mysql_free_result: 釋放返回佔用內存。
mysql_insert_id: 返回最後一次使用 INSERT 指令的 ID。
mysql_list_fields: 列出指定資料表的字段 (field)。
mysql_list_dbs: 列出 MySQL 服務器可用的數據庫 (database)。
mysql_list_tables: 列出指定數據庫的資料表 (table)。
mysql_num_fields: 取得返回字段的數目。
mysql_num_rows: 取得返回列的數目。
mysql_pconnect: 打開 MySQL 服務器持續連接。
mysql_query: 送出一個 query 字符串。
mysql_result: 取得查詢 (query) 的結果。
mysql_select_db: 選擇一個數據庫。
mysql_tablename: 取得資料表名稱。

詳細說明

mysql_affected_rows
得到 MySQL 最後操作影響的列數目。
語法: int mysql_affected_rows(int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可得到 MySQL 最後查詢操作 INSERT、UPDATE 或 DELETE 所影響的列 (row) 數目。若最後的查詢 (query) 是使用 DELETE 而且沒有使用 WHERE 命令,則會刪除全部資料,本函數將返回 0。若最後使用的是 SELECT,則用本函數不會得到預期的數目,因為要改變 MySQL 數據庫本函數才有效,欲得到 SELECT 返回的數目需使用 mysql_num_rows() 函數。

mysql_close
關閉 MySQL 服務器連接。
語法: int mysql_close(int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數關閉與 MySQL 數據庫服務器的連接。若無指定參數 link_identifier 則會關閉最後的一筆連接。用 mysql_pconnect() 連接則無法使用本函數關閉。實際上本函數不是一定需要的,當 PHP 整頁程序結束後,將會自動關閉與數據庫的非永久性 (non-persistent) 連接。成功返回 true、失敗返回 false 值。
參考: mysql_connect() mysql_pconnect()

mysql_connect
打開 MySQL 服務器連接。
語法: int mysql_connect(string [hostname] [:port], string [username], string [password]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數建立與 MySQL 服務器的連接。其中所有的參數都可省略。當使用本函數卻不加任何參數時,參數 hostname 的默認值為 localhost、參數 username 的默認值為 PHP 執行行程的擁有者、參數 password 則為空字符串 (即沒有密碼)。而參數 hostname 後面可以加冒號與埠號,代表使用那個埠與 MySQL 連接。當然在使用數據庫時,早點使用 mysql_close() 將連接關掉可以節省資源。
使用範例
這是一位未具名網友提供的範例 (18-Feb-1999)
站長";
}
$row = mysql_fetch_row($res);
echo "未來您使用的號碼為: ".$row[0];
?>
參考: mysql_close() mysql_pconnect()

mysql_create_db
建立一個 MySQL 新數據庫。
語法: int mysql_create_db(string database name, int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數用來建立新的數據庫 (database)。在建立前,必須先與服務器連接。
參考: mysql_drop_db()

mysql_data_seek
移動內部返回指針。
語法: int mysql_data_seek(int result_identifier, int row_number);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可移動內部返回的列指針到指定的 row_number 去。之後若使用 mysql_fetch_row() 可以返回新列的值。成功返回 true、失敗則返回 false。

mysql_db_query
送查詢字符串 (query) 到 MySQL 數據庫。
語法: int mysql_db_query(string database, string query, int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數用來送出查詢字符串 (query) 到後端的 MySQL 數據庫中。而可省略的參數 link_identifier 若不存在,程序會自動尋找其它 mysql_connect() 連接後的連接代碼。發生錯誤時會返回 false,其它沒錯誤時則返回它的返回代碼。
參考: mysql_connect()

mysql_drop_db
移除數據庫。
語法: int mysql_drop_db(string database_name, int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數移除已存在的數據庫。成功返回 true、失敗則返回 false。
參考: mysql_create_db()

mysql_errno
返回錯誤信息代碼。
語法: int mysql_errno(int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可以得到 MySQL 數據庫服務器的錯誤代碼。通常用在 PHP 網頁程序開發階段,作為 PHP 與 MySQL 的除錯用。
使用範例
";
mysql_select_db("nonexistentdb");
echo mysql_errno().": ".mysql_error()."
";
$conn = mysql_query("SELECT * FROM nonexistenttable");
echo mysql_errno().": ".mysql_error()."
";
?>
參考: mysql_error()

mysql_error
返回錯誤信息。
語法: string mysql_error(int [link_identifier]);
返回值: 字符串
函數種類: 數據庫功能
內容說明: 本函數可以得到 MySQL 數據庫服務器的錯誤信息。通常用在 PHP 網頁程序開發階段,與 mysql_errno() 一起作為PHP 與 MySQL 的除錯用。
參考: mysql_errno()

mysql_fetch_array
返回數組資料。
語法: array mysql_fetch_array(int result, int [result_typ]);
返回值: 數組
函數種類: 數據庫功能
內容說明: 本函數用來將查詢結果 result 拆到數組變量中。若 result 沒有資料,則返回 false 值。而本函數可以說是 mysql_fetch_row() 的加強函數,除可以將返回列及數字索引放入數組之外,還可以將文字索引放入數組中。若是好幾個返回字段都是相同的文字名稱,則最後一個置入的字段有效,解決方法是使用數字索引或者為這些同名的字段 (column) 取別名 (alias)。治募注意的是使用本函數的處理速度其實不會比 mysql_fetch_row() 函數慢,要用哪個函數還是看使用的需求決定。參數 result_typ 是一個常量值,有以下幾種常量 MYSQL_ASSOC、MYSQL_NUM 與 MYSQL_BOTH。
使用範例


mysql_fetch_field
取得字段信息。
語法: object mysql_fetch_field(int result, int [field_offset]);
返回值: 類
函數種類: 數據庫功能
內容說明: 本函數返回的類資料為 result 的字段 (Column) 信息。返回類的屬性如下:
name - 字段名稱
table - 字段所在表格的資料表名稱
max_length - 字段的最大長度
not_null - 若為 1 表示本字段不能是空的 (null)
primary_key - 若為 1 表示本字段是主要鍵 (primary key)
unique_key - 若為 1 表示本字段為不可重覆鍵 (unique key)
multiple_key - 若為 1 表示本字段為可重覆鍵 (non-unique key)
numeric - 若為 1 表示本字段為數字類型 (numeric)
blob - 若為 1 表示本字段為位類型 (BLOB)
type - 字段類型
unsigned - 若為 1 表示本字段為無記號 (unsigned)
zerofill - 若為 1 表示本字段為被零填滿 (zero-filled)
參考: mysql_field_seek()

mysql_fetch_lengths
返回單列各欄資料最大長度。
語法: array mysql_fetch_lengths(int result);
返回值: 數組
函數種類: 數據庫功能
內容說明: 本函數將 mysql_fetch_row() 處理過的最後一列資料的各字段資料最大長度放在數組變量之中。若執行失敗則返回 false 值。返回數組的第一筆資料索引值是 0。
參考: mysql_fetch_row()

mysql_fetch_object
返回類資料。
語法: object mysql_fetch_object(int result, int [result_typ]);
返回值: 類
函數種類: 數據庫功能
內容說明: 本函數用來將查詢結果 result 拆到類變量中。使用方法和 mysql_fetch_array() 幾乎相同,不同的地方在於本函數返回資料是類而不是數組。若 result 沒有資料,則返回 false 值。另外治募注意的地方是,取回的類資料的索引只能是文字而不能用數字,這是因為類的特性。類資料的特性中所有的屬性 (property) 名稱都不能是數字,因此只好乖乖使用文字字符串當索引了。參數 result_typ是一個常量值,有以下幾種常量 MYSQL_ASSOC、MYSQL_NUM 與 MYSQL_BOTH。關於速度方面,本函數的處理速度幾乎和 mysql_fetch_row() 及 mysql_fetch_array() 二函數差不多,要用哪個函數還是看使用的需求決定。
使用範例
下面的例子示範如使用返回的類。
user_id;
echo $row->fullname;
}
mysql_free_result($result);
?>
參考: mysql_fetch_array() mysql_fetch_row()

mysql_fetch_row
返回單列的各字段。
語法: array mysql_fetch_row(int result);
返回值: 數組
函數種類: 數據庫功能
內容說明: 本函數用來將查詢結果 result 之單列拆到數組變量中。數組的索引是數字索引,第一個的索引值是 0。若 result 沒有資料,則返回 false 值。
參考: mysql_fetch_array() mysql_fetch_object() mysql_data_seek() mysql_fetch_lengths() mysql_result()

mysql_field_name
返回指定字段的名稱。
語法: string mysql_field_name(int result, int field_index);
返回值: 字符串
函數種類: 數據庫功能
內容說明: 本函數用來取得指定字段的名稱。
使用範例
mysql_field_name($result,2);

mysql_field_seek
配置指針到返回治募某字段。
語法: int mysql_field_seek(int result, int field_offset);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數配置目前的指針到返回治募特定字段中。
參考: mysql_fetch_field()

mysql_field_table
獲得目前字段的資料表 (table) 名稱。
語法: string mysql_field_table(int result, int field_offset);
返回值: 字符串
函數種類: 數據庫功能
內容說明: 本函數可以得到目前所在字段的資料表名。

mysql_field_type
獲得目前字段的類型。
語法: string mysql_field_type(int result, int field_offset);
返回值: 字符串
函數種類: 數據庫功能
內容說明: 本函數可以得到目前所在字段的類型格式。返回的字符串為字段的類型,包括了 int、real、string、blob....等等,詳見 MySQL 的相關文件中有關於類型的部份。
使用範例
";
echo "本資料表的字段如下
";
while ($i < $fields) { $type = mysql_field_type ($result, $i); $name = mysql_field_name ($result, $i); $len = mysql_field_len ($result, $i); $flags = mysql_field_flags ($result, $i); echo $type." ".$name." ".$len." ".$flags."
";
$i++;
}
mysql_close();
?>

mysql_field_flags
獲得目前字段的標誌。
語法: string mysql_field_flags(int result, int field_offset);
返回值: 字符串
函數種類: 數據庫功能
內容說明: 本函數可以得到目前所在字段的標誌。若一個字段有數種屬性標誌,則返回的標誌為這些屬性連起來的字符串,每個屬性都用空格隔開,可以使用 explode() 切開這些字符串。返回的標誌可能是:not_null、primary_key、unique_key、multiple_key、blob、unsigned、zerofill、binary、enum、auto_increment、timestamp。

mysql_field_len
獲得目前字段的長度。
語法: int mysql_field_len(int result, int field_offset);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可以得到目前所在字段的長度。

mysql_free_result
釋放返回佔用內存。
語法: boolean mysql_free_result(int result);
返回值: 布爾值
函數種類: 數據庫功能
內容說明: 本函數可以釋放目前 MySQL 數據庫 query 返回所佔用的內存。一般只有在非常擔心在內存的使用上可能會不足的情形下才會用本函數。PHP 程序會在結束時自動釋放。

mysql_insert_id
返回最後一次使用 INSERT 指令的 ID。
語法: int mysql_insert_id(int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可以得到最後一次使用 INSERT 到 MySQL 數據庫的執行 ID。sleibowitz@btcwcu.org (13-May-1999) 指出在 PHP 3.0.7 版用 REPLACE 也和使用 INSERT 一樣,可以使用本函數獲得 ID。

mysql_list_fields
列出指定資料表的字段 (field)。
語法: int mysql_list_fields(string database_name, string table_name, int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可以得到指定的資料表的所有字段。返回的字段信息可以供 mysql_field_flags()、mysql_field_len()、mysql_field_name() 及 mysql_field_type() 等函數使用。若有錯誤則返回 -1。

mysql_list_dbs
列出 MySQL 服務器可用的數據庫 (database)。
語法: int mysql_list_dbs(int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可以得到 MySQL 服務器的可用數據庫。

mysql_list_tables
列出指定數據庫的資料表 (table)。
語法: int mysql_list_tables(string database, int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可以得到指定數據庫中的所有資料表名稱。

mysql_num_fields
取得返回字段的數目。
語法: int mysql_num_fields(int result);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可以得到返回字段的數目。
參考: mysql_db_query() mysql_query() mysql_fetch_field() mysql_num_rows()

mysql_num_rows
取得返回列的數目。
語法: int mysql_num_rows(int result);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可以得到返回列的數目。
參考: mysql_db_query() mysql_query() mysql_fetch_row()

mysql_pconnect
打開 MySQL 服務器持續連接。
語法: int mysql_pconnect(string [hostname] [:port], string [username], string [password]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數和 mysql_connect() 雷同。不同的地方在於使用本函數打開數據庫時,程序會先尋找是否曾經執行過本函數,若執行過則返回先前執行的 ID。另一個不同的地方是本函數無法使用 mysql_close() 關閉數據庫。

mysql_query
送出一個 query 字符串。
語法: int mysql_query(string query, int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數送出 query 字符串供 MySQL 做相關的處理或者執行。若沒有指定 link_identifier 參數,則程序會自動尋找最近打開的 ID。當 query 查詢字符串是 UPDATE、INSERT 及 DELETE 時,返回的可能是 true 或者 false;查詢的字符串是 SELECT 則返回新的 ID 值。joey@samaritan.com (09-Feb-1999) 指出,當返回 false 時,並不是執行成功但無返回值,而是查詢的字符串有錯誤。
參考: mysql_db_query() mysql_select_db() mysql_connect()

mysql_result
取得查詢 (query) 的結果。
語法: int mysql_result(int result, int row, mixed field);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數取得一格 query 的結果。參數 field 可以是字段名稱、順序或者是 FieldName.TableName 的格式。在返回資料量少時,可以使用本函數來處理。當數據庫大時,本函數的效率就有待考量了,這時可以使用較有效率的 mysql_fetch_row()、mysql_fetch_array() 及 mysql_fetch_object() 等函數。

mysql_select_db
選擇一個數據庫。
語法: int mysql_select_db(string database_name, int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數選擇 MySQL 服務器中的數據庫以供之後的資料查詢作業 (query) 處理。成功返回 true,失敗則返回 false。
參考: mysql_connect() mysql_pconnect() mysql_query()

mysql_tablename
取得資料表名稱。
語法: string mysql_tablename(int result, int i);
返回值: 字符串
函數種類: 數據庫功能
內容說明: 本函數可取得資料表名稱字符串,一般配合 mysql_list_tables() 函數使用,取得該函返回的數字的名稱字符串。
使用範例
";
$i++;
}
?>

如果覺得不錯的話,歡迎分享

2009年7月6日 星期一

C語言學習實錄

C語言學習實錄

起因...

早在很久以前就曾經有想學程式設計

然而C語言也算是最基本的程式語言之一

所以早在小學就有去巨匠補過C語言

不過無奈啊!!那時候就是不開竅

導致程式語言一直都還是"夢想"

......
......

直到到了大學因為實驗室需要

接觸了PHP語言

從此就創造了人生另一片天地(顆顆)

...

雖然PHP語言日漸進步

不過學習C語言或者其他程式語言的想法

還是不停在腦中盤旋

因此在升大三的暑假

終於再次有機會到巨匠學習C語言摟!!

......
<重點>
......

本人將會把在巨匠學的程式範例和一些重點 PO 上來

放在"C語言學習實錄"分類

供大家參考

此次暑假預計學習的有

C++ 初階 (其實還是C語言)
C++ 進階
C++ 物件導向

歡迎大家觀賞 (顆顆)

也當作自己的學習紀錄吧!!


STAR

============開始=================
============C語言學習實錄一======

C語言學習實錄之一
(第一次上課)

當然學習程式語言第一步驟當然

就是安裝相關程式

此次課程使用的是 DEV C++ (免費的搜尋一下就下載的到)
點我進入官方下載網頁

安裝好後呢

就是先確定
是否安裝成功?
可否使用?

SO 老套的 當然就是先輸出 "HELLO WORLD!!" (顆顆)
此次使用了
printf 輸出在螢幕
system 系統相關

ex1-1

#include //引入檔(和PHP不同),要使用哪些語法就必須引用那些引入檔
#include //system語法用
int main(void)
{
printf("Hello,C!\n"); //輸出
printf("Hello,World!\n");
system("pause"); //程式暫停 (沒輸入的話視窗執行完就跳掉)
return 0; //無實質意義,只是表示檔案成功執行完畢(可有可無)
}


接下來就是HELLO WORLD 進階版(顆顆)
就是要輸入名子然後 HELLO!!
此次增加了

宣告變數
int 宣告為整數
char 宣告為字元

變數代數 %x
%c 為字元
%d 為十進位

ex1-2

#include
#include
int main(void){
int y=10; //宣告變數整數y 且值為10
char name; //宣告字元name
printf("please enter your name\n");
scanf("%c",&name); //scanf為讓使用者輸入東西,並存入name中('&'要加,%c字元)
printf("please enter your age\n");
scanf("%d",&y);//%d 輸入十進位
printf("HELLO !!\n大家好\n");
printf("我是%c\n今年%d歲\n",name,y); //(這邊不用'&')
system("pause");
return 0;
}


接下來呢
就是在整合入 運算的部分

ex1-3

#include
#include
int main(void){
int n1,n2,s;
/*注解
printf("請輸入被加數\n");
scanf("%d",&n1);
printf("請輸入加數\n");
scanf("%d",&n2);
s = n1+n2;
printf("%d+%d=%d\n",n1,n2,s);
p.s此段較複雜,下段較簡潔
*/
printf("請輸入被加數與加數,並請以豆號隔開\n");
scanf("%d,%d",&n1,&n2); //輸入的時候必須符合""之間的格式
printf("%d+%d=%d\n",n1,n2,n1+n2);

system("pause");
return 0;
}


此次課程最後就是較複雜的運算
加入了小數的部分

宣告變數
double 為小數

變數代數 %x
%f 小數


ex1-4

#include
#include
int main(void)
{
int f;
double c; //宣告為小數c (float也可,差在記憶體大小)
printf("please enter F\n");
scanf("%d",&f);
c = (f-32)*5/(double) 9;
/*
p.s
(double) 9 為宣告9為小數,(隨便挑一個宣靠為小數即可)

在c語言中,整數間運算的結果還是整數
如果不加入(double) 那最後的c值會是 xx.0000 小數部分為0
*/
printf("C is %.2f \n",c); //%f為小數,%2.4f表示只顯示小數點前兩位,小數點後四位
system("pause");
return 0;

}

此次課程結束

homework
1.寫出兩數相減
2.寫出bmi計算,輸入身高(cm) 體重(kg) (整數)



hw1-1 寫出兩數相減

#include
#include
int main(void){
int a,b;
printf("請輸入被減數\n");
scanf("%d",&a);
printf("請輸入減數\n");
scanf("%d",&b);
printf("%d-%d=%d\n",a,b,a-b);
system("pause");
return 0;
}



hw1-2 寫出bmi計算,輸入身高(cm) 體重(kg) (整數)

#include
#include
int main(void){
int cm,kg;
double bmi;
printf("請輸入身高(cm)\n");
scanf("%d",&cm);
printf("請輸入體重(kg)\n");
scanf("%d",&kg);
bmi = (kg*(double)10000)/(cm*cm);
printf("您的身高為%d,體重為%d,BMI值為%.2f\n",cm,kg,bmi);
system("pause");
return 0;
}


============C語言學習實錄二===========

C語言學習實錄之二
C語言學習實錄之二
(第二次上課)

第二次上課

終於慢慢切入了最重要的地方了

就是重複迴圈 for() while() 等等

在c語言中這些用法都和php差不多(別的語法也是...)

所以還蠻容易上手的



首先就是for()迴圈的應用

for(起始值;判斷值是否進行;每次判斷值得改變){
do something
}

接下來是範例,要算出階層 就是 "!"

不過在這邊要注意的是,由於宣告的最後放結果的a,的長度只有31位元,正整數只能存放15位元
,所以如果輸入太大,則會出現"溢位"。

ex2-1

#include
#include
int main(void){
int i,a=1,n;
printf("請輸入皆層\n");
scanf ("%d",&n);
for(i=1;i<=n;i++){ //i起始值為一,每執行一次就加一,直到>n停止
a = a*i;
}
printf("=%d\n",a);
system("pause");
return 0;
}

接下來當然就是for()迴圈加強版摟!!

這邊主要差是在一次跳兩個數字,就變成偶數

ex 2-2

#include
#include
int main(void){
int i,a=0,n;
printf("請輸入偶數連加的最終值\n");
scanf("%d",&n);
for(i=2;i<=n;i=i+2){
a=a+i;
}
printf("%d\n",a);
system("pause");
return 0;
}


for()迴圈其實就差不多就這樣

如果想更詳細了解的話可以參考 php重複迴圈

for()迴圈基本上是大同小異,不過在寫法上還是有些差異


接下來就進入下一個主題

while()迴圈

這邊同樣可以參考 php重複迴圈

這個範例就直接是while()迴圈較深入的範例,用了兩個迴圈(當初就寫在一起了,忘了分開)

第一個是可以重複執行

第二個就是要計算所有整數的和

這邊有多一個指令 system("cls") 就是每執行一次就清除螢幕



ex2-3

#include
#include
int main(void){
int i,s,n;
char f='y'; // 宣告字元 f = 'y'
while(f == 'y' || f == 'Y') // 由於上述 所以可以執行以下
{
int i=1;s=0; //這邊要將i s 歸位,否則會錯誤(迴圈的變數值會保留,所以要重設)
printf("求1~N所有整數之和\n");
scanf("%d",&n);
while(i<=n) //第二個迴圈,用來計算
{
s=s+i;
i++;
}
printf("1~%d所有和為%d\n",n,s);
printf("如果繼續請案y\n");
scanf(" %c",&f); //輸入值給f,如果不是 'y' or 'Y' 則第一個while()不會繼續執行
//這邊在設定 %c時,前面要加一個空白,是告訴c,把"\n"(換行)清除掉,(c預設有換行)
system("cls");
}
system("pause");
return 0;
}



------------------------------------------------
本人將會把在巨匠學的程式範例和一些重點 PO 上來

放在"C語言學習實錄"分類

供大家參考

此次暑假預計學習的有

C++ 初階 (其實還是C語言)
C++ 進階
C++ 物件導向

歡迎大家觀賞 (顆顆)

也當作自己的學習紀錄吧!!
------------------------------------------------


============C語言學習實錄三===========

PHP 函數索引

此篇是也是從網路上轉貼來的,可以當成工具

附錄 A PHP 函數索引


Abs: 取得絕對值。
Acos: 取得反餘弦值。
ada_afetch: 取得數據庫的返回列。
ada_autocommit: 開關自動改動功能。
ada_close: 關閉 Adabas D 鏈接。
ada_commit: 改動 Adabas D 數據庫。
ada_connect: 鏈接至 Adabas D 數據庫。
ada_exec: 執行 SQL 指令。
ada_fetchrow: 取得返回一列。
ada_fieldname: 取得字段名稱。
ada_fieldtype: 取得字段資料類型。
ada_freeresult: 釋出返回資料的內存。
ada_numfields: 取得字段數目。
ada_numrows: 取得返回列數目。
ada_result: 取得返回資料。
ada_resultall: 返回 HTML 表格資料。
ada_rollback: 撤消當前交易。
AddSlashes: 字符串加入斜線。
apache_lookup_uri: 獲得所有的 URI 相關信息。
apache_note: 獲得及配置apache服務器的請求紀錄。
array: 建立一個新的數組。
array_walk: 讓使用者自訂函數能處理數組中的每一個元素。
arsort: 將數組的值由大到小排序。
Asin: 取得反正弦值。
asort: 將數組的值由小到大排序。
aspell_check: 檢查一個單字。
aspell_check-raw: 檢查一個單字,即使拼錯也不改變或修正。
aspell_new: 載入一個新的字典。
aspell_suggest: 檢查一個單字,並提供拼寫建議。
Atan: 取得反正切值。
Atan2: 計算二數的反正切值。
base64_decode: 將 BASE64 編碼字符串解碼。
base64_encode: 將字符串以 BASE64 編碼。
basename: 返回不含路徑的文件字符串。
base_convert: 轉換數字的進位方式。
bcadd: 將二個高精確度數字相加。
bccomp: 比較二個高精確度數字。
bcdiv: 將二個高精確度數字相除。
bcmod: 取得高精確度數字的餘數。
bcmul: 將二個高精確度數字相乘。
bcpow: 求一高精確度數字次方值。
bcscale: 配置程序中所有 BC 函數庫的默認小數點位數。
bcsqrt: 求一高精確度數字的平方根。
bcsub: 將二個高精確度數字相減。
bin2hex: 二進位轉成十六進位。
BinDec: 二進位轉成十進位。
Ceil: 計算大於指定數的最小整數。
chdir: 改變目錄。
checkdate: 驗證日期的正確性。
checkdnsrr: 檢查指定網址的 DNS 記錄。
chgrp: 改變文件所屬的群組。
chmod: 改變文件的屬性。
Chop: 去除連續空白。
chown: 改變文件的擁有者。
Chr: 返回序數值的字符。
chunk_split: 將字符串分成小段。
clearstatcache: 清除文件狀態快取。
closedir: 關閉目錄 handle。
closelog: 關閉系統紀錄。
connection_aborted: 若鏈接中斷則返回 true。
connection_status: 取得連接狀態。
connection_timeout: 若超過 PHP 程序執行時間則返回 true。
convert_cyr_string: 轉換古斯拉夫字符串成其它字符串。
copy: 複製文件。
Cos: 餘弦計算。
count: 計算變量或數組中的元素個數。
crypt: 將字符串用 DES 編碼加密。
current: 返回數組中目前的元素。
date: 將服務器的時間格式化。
dbase_add_record: 加入資料到 dBase 資料表。
dbase_close: 關閉 dBase 資料表。
dbase_create: 建立 dBase 資料表。
dbase_delete_record: 刪除 dBase 資料表的資料。
dbase_get_record: 取得 dBase 資料表的資料。
dbase_numfields: 取得 dBase 資料表的字段數。
dbase_numrecords: 取得 dBase 資料表的列數。
dbase_open: 打開 dBase 資料表。
dbase_pack: 清理 dBase 資料表。
dba_close: 關閉數據庫。
dba_delete: 刪除指定資料。
dba_exists: 檢查鍵是否存在。
dba_fetch: 取回指定資料。
dba_firstkey: 取回首筆鍵值。
dba_insert: 加入資料。
dba_nextkey: 取回下筆鍵值。
dba_open: 打開數據庫鏈接。
dba_optimize: 最佳化數據庫。
dba_popen: 打開並保持數據庫鏈接。
dba_replace: 改動或加入資料。
dba_sync: 數據庫同步化。
dblist: 取得 DBM 的信息。
dbmclose: 關閉 DBM 數據庫。
dbmdelete: 刪除指定資料。
dbmexists: 檢查鍵是否存在。
dbmfetch: 取回指定資料。
dbmfirstkey: 取回首筆鍵名。
dbminsert: 加入資料。
dbmnextkey: 取回下筆鍵值。
dbmopen: 打開 DBM 數據庫鏈接。
dbmreplace: 改動或加入資料。
debugger_off: 關閉內建的 PHP 除錯器。
debugger_on: 使用內建的 PHP 除錯器。
DecBin: 十進位轉二進位。
DecHex: 十進位轉十六進位。
DecOct: 十進位轉八進位。
delete: 無用的項目。
die: 輸出信息並中斷 PHP 程序。
dir: 目錄類別類。
dirname: 取得路徑中的目錄名。
diskfreespace: 取得目錄所在的剩餘可用空間。
dl: 載入 PHP 擴充模塊。
doubleval: 變量轉成倍浮點數類型。
each: 返回數組中下一個元素的索引及值。
easter_date: 計算復活節日期。
easter_days: 計算復活節與三月廿一日之間日期數。
echo: 輸出字符串。
empty: 判斷變量是否已配置。
end: 將數組的內部指針指到最後的元素。
ereg: 字符串比對解析。
eregi: 字符串比對解析,與大小寫無關。
eregi_replace: 字符串比對解析並取代,與大小寫無關。
ereg_replace: 字符串比對解析並取代。
error_log: 送出一個錯誤信息。
error_reporting: 配置錯誤信息回報的等級。
escapeshellcmd: 除去字符串中的特殊符號。
eval: 將值代入字符串之中。
exec: 執行外部程序。
exit: 結束 PHP 程序。
Exp: 自然對數 e 的次方值。
explode: 切開字符串。
extract: 匯入數組到符號表。
fclose: 關閉已打開的文件。
FDF_close: 關閉 FDF 文件。
FDF_create: 建立新的 FDF 文件。
FDF_get_file: 取得 /F 鍵的值。
FDF_get_status: 取得 /STATUS 鍵的值。
FDF_get_value: 取得字段的值。
FDF_next_field_name: 下一字段的名稱。
FDF_open: 打開 FDF 文件。
FDF_save: 將 FDF 文件存文件。
FDF_set_ap: 配置顯示字段。
FDF_set_file: 配置 /F 鍵。
FDF_set_status: 配置 /STATUS 鍵。
FDF_set_value: 配置字段的值。
feof: 測試文件指針是否指到文件尾。
fgetc: 取得文件指針所指的字符。
fgetcsv: 取得文件指針所指行,並解析 CSV 字段。
fgets: 取得文件指針所指的行。
fgetss: 取得文件指針所指的行,並去掉 HTML 語言標記。
file: 將文件全部讀入數組變量中。
fileatime: 取得文件最後的存取時間。
filectime: 取得文件最後的改變時間。
filegroup: 取得文件所屬的群組。
fileinode: 取得文件的 inode 值。
filemtime: 取得文件最後的修改時間。
fileowner: 取得文件的擁有者。
fileperms: 取得文件的權限配置。
filepro: 讀取 FilePro Map 文件。
filepro_fieldcount: 取得字段數目。
filepro_fieldname: 取得字段名稱。
filepro_fieldtype: 取得字段類型。
filepro_fieldwidth: 取得字段寬度。
filepro_retrieve: 取得指定儲存格資料。
filepro_rowcount: 取得列數目。
filesize: 獲得文件的大小。
filetype: 獲得文件的類型。
file_exists: 檢查文件是否存在。
flock: 鎖住文件。
Floor: 計算小於指定數的最大整數。
flush: 清出輸出緩衝區。
fopen: 打開文件或者 URL。
fpassthru: 輸出所有剩餘資料。
fputs: 寫到文件指針。
fread: 位組的方式讀取文件。
FrenchToJD: 將法國共和曆法轉換成為凱撒日計數。
fseek: 移動文件指針。
fsockopen: 打開網絡的 Socket 鏈接。
ftell: 取得文件讀寫指針位置。
ftp_cdup: 回上層目錄。
ftp_chdir: 改變路徑。
ftp_connect: 打開 FTP 鏈接。
ftp_delete: 將文件刪除。
ftp_fget: 下載文件,並存在已開的文件中。
ftp_fput: 上傳已打開文件。
ftp_get: 下載文件。
ftp_login: 登入 FTP 服務器。
ftp_mdtm: 獲得指定文件的最後修改時間。
ftp_mkdir: 建新目錄。
ftp_nlist: 列出指定目錄中所有文件。
ftp_pasv: 切換主被動傳輸模式。
ftp_put: 上傳文件。
ftp_pwd: 取得目前所在路徑。
ftp_quit: 關閉 FTP 連接。
ftp_rawlist: 詳細列出指定目錄中所有文件。
ftp_rename: 將文件改名。
ftp_rmdir: 刪除目錄。
ftp_size: 獲得指定文件的大小。
ftp_systype: 顯示服務器系統。
function_exists: 檢查函數是否已定義。
fwrite: 二進位位方式寫入文件。
getallheaders: 獲得所有 HTTP 變量值。
getdate: 獲得時間及日期信息。
getenv: 取得系統的環境變量
gethostbyaddr: 返回機器名稱。
gethostbyname: 返回 IP 網址。
gethostbynamel: 返回機器名稱的所有 IP。
GetImageSize: 取得圖片的長寬。
getlastmod: 返回該網頁的最後修改時間。
getmxrr: 取得指定網址 DNS 記錄之 MX 字段。
getmyinode: 返回該網頁的 inode 值。
getmypid: 返回 PHP 的行程代號。
getmyuid: 返回 PHP 的使用者代碼。
getrandmax: 隨機數的最大值。
getrusage: 返回系統資源使用率。
gettimeofday: 取得目前時間。
gettype: 取得變量的類型。
get_cfg_var: 取得 PHP 的配置選項值。
get_current_user: 取得 PHP 行程的擁有者名稱。
get_magic_quotes_gpc: 取得 PHP 環境變量 magic_quotes_gpc 的值。
get_magic_quotes_runtime: 取得 PHP 環境變量 magic_quotes_runtime 的值。
get_meta_tags: 抽出文件所有 meta 標記的資料。
gmdate: 取得目前與 GMT 差後的時間。
gmmktime: 取得 UNIX 時間戳記的格林威治時間。
GregorianToJD: 將格裡高裡曆法轉換成為凱撒日計數。
gzclose: 關閉壓縮文件。
gzeof: 判斷是否在壓縮文件尾。
gzfile: 讀壓縮文件到數組中。
gzgetc: 讀壓縮文件中的字符。
gzgets: 讀壓縮文件中的字符串。
gzgetss: 讀壓縮文件中的字符串,並去掉 HTML 指令。
gzopen: 打開壓縮文件。
gzpassthru: 解壓縮指針後全部資料。
gzputs: 資料寫入壓縮文件。
gzread: 壓縮文件讀出指定長度字符串。
gzrewind: 重設壓縮文件指針。
gzseek: 設壓縮文件指針至指定處。
gztell: 取得壓縮文件指針處。
gzwrite: 資料寫入壓縮文件。
header: 送出 HTTP 協議的標頭到瀏覽器
HexDec: 十六進位轉十進位。
htmlentities: 將所有的字符都轉成 HTML 字符串。
htmlspecialchars: 將特殊字符轉成 HTML 格式。
hw_Children: 取得子類代碼。
hw_ChildrenObj: 取得子類的類記錄。
hw_Close: 關閉 Hyperwave 連接。
hw_Connect: 連上 Hyperwave 服務器。
hw_Cp: 複製類。
hw_Deleteobject: 刪除類。
hw_DocByAnchor: 取得指定錨的文件類代碼。
hw_DocByAnchorObj: 取得指定錨的文件類。
hw_DocumentAttributes: 取得指定文件類屬性。
hw_DocumentBodyTag: 取得指定文件類的文件主體標記。
hw_DocumentContent: 取得指定文件類的內容。
hw_DocumentSetContent: 重設指定文件類的內容。
hw_DocumentSize: 取得文件大小。
hw_EditText: 改動文字檔寧。
hw_Error: 取得錯誤代碼。
hw_ErrorMsg: 取得錯誤信息。
hw_Free_Document: 釋放文件使用的內存。
hw_GetAnchors: 取得文件的鏈接錨。
hw_GetAnchorsObj: 取得文件的鏈接錨記錄。
hw_GetAndLock: 取得並鎖住類。
hw_GetChildColl: 取得子類們的 ID。
hw_GetChildCollObj: 取得子類們的資料。
hw_GetChildDocColl: 取得全部子文件聚集。
hw_GetChildDocCollObj: 取得全部子文件聚集記錄。
hw_GetObject: 取得類。
hw_GetObjectByQuery: 搜尋類。
hw_GetObjectByQueryColl: 搜尋聚集類。
hw_GetObjectByQueryCollObj: 搜尋聚集類。
hw_GetObjectByQueryObj: 搜尋類。
hw_GetParents: 取得父類的 ID。
hw_GetParentsObj: 取得父類的資料。
hw_GetRemote: 取得遠端文件。
hw_GetRemoteChildren: 取得遠端的子文件。
hw_GetSrcByDestObj: 取得指定目的的文件內容。
hw_GetText: 取得純文字檔寧。
hw_GetUsername: 目前使用者名字。
hw_Identify: 使用者身份確認。
hw_InCollections: 檢查類聚集。
hw_Info: 連接信息。
hw_InsColl: 插入聚集。
hw_InsDoc: 插入文件。
hw_InsertDocument: 上傳文件。
hw_InsertObject: 插入類記錄。
hw_Modifyobject: 修改類記錄。
hw_Mv: 移動類。
hw_New_Document: 建立新文件。
hw_Objrec2Array: 類記錄轉為數組。
hw_OutputDocument: 輸出文件。
hw_pConnect: 連上 Hyperwave 服務器。
hw_PipeDocument: 取得文件。
hw_Root: 取得根類代碼。
hw_Unlock: 取消鎖定。
hw_Who: 列出目前使用者。
ibase_bind: 鏈接 PHP 變量到 InterBase 參數。
ibase_close: 關閉 InterBase 服務器連接。
ibase_connect: 打開 InterBase 服務器連接。
ibase_execute: 執行 SQL 的指令部分。
ibase_fetch_row: 返回單列的各字段。
ibase_free_query: 釋放查詢指令佔用內存。
ibase_free_result: 釋放返回佔用內存。
ibase_pconnect: 保持 InterBase 服務器連接。
ibase_prepare: 分析 SQL 語法。
ibase_query: 送出一個 query 字符串。
ibase_timefmt: 配置時間格式。
ifxus_close_slob: 刪除 slob 類。
ifxus_create_slob: 建立 slob 類。
ifxus_open_slob: 打開 slob 類。
ifxus_read_slob: 讀取指定數目的 slob 類。
ifxus_seek_slob: 配置目前文件或找尋位置。
ifxus_tell_slob: 返回目前文件或找尋位置。
ifxus_write_slob: 將字符串寫入 slob 類中。
ifx_affected_rows: 得到 Informix 最後操作影響的列數目。
ifx_blobinfile_mode: 配置長位類模式。
ifx_byteasvarchar: 配置位組模式默認值。
ifx_close: 關閉 Informix 服務器連接。
ifx_connect: 打開 Informix 服務器連接。
ifx_copy_blob: 複製長位類。
ifx_create_blob: 建立長位類。
ifx_create_char: 建立字符類。
ifx_do: 執行已準備 query 字符串。
ifx_error: 取得 Informix 最後的錯誤。
ifx_errormsg: 取得 Informix 最後錯誤信息。
ifx_fetch_row: 返回單列的各字段。
ifx_fieldproperties: 列出 Informix 的 SQL 字段屬性。
ifx_fieldtypes: 列出 Informix 的 SQL 字段。
ifx_free_blob: 刪除長位類。
ifx_free_char: 刪除字符類。
ifx_free_result: 釋放返回佔用內存。
ifx_free_slob: 刪除 slob 類。
ifx_getsqlca: 取得 query 後的 sqlca 信息。
ifx_get_blob: 取得長位類。
ifx_get_char: 取得字符類。
ifx_htmltbl_result: 將 query 返回資料轉成 HTML 表格。
ifx_nullformat: 配置空字符模式默認值。
ifx_num_fields: 取得返回字段的數目。
ifx_num_rows: 取得返回列的數目。
ifx_pconnect: 打開 Informix 服務器持續連接。
ifx_prepare: 準備 query 字符串。
ifx_query: 送出一個 query 字符串。
ifx_textasvarchar: 配置文字模式默認值。
ifx_update_blob: 更改長位類。
ifx_update_char: 更改字符類。
ignore_user_abort: 連接中斷後程序是否執行。
ImageArc: 畫弧線。
ImageChar: 寫出橫向字符。
ImageCharUp: 寫出直式字符。
ImageColorAllocate: 匹配顏色。
ImageColorAt: 取得圖中指定點顏色的索引值。
ImageColorClosest: 計算色表中與指定顏色最接近者。
ImageColorExact: 計算色表上指定顏色索引值。
ImageColorResolve: 計算色表上指定或最接近顏色的索引值。
ImageColorSet: 配置色表上指定索引的顏色。
ImageColorsForIndex: 取得色表上指定索引的顏色。
ImageColorsTotal: 計算圖的顏色數。
ImageColorTransparent: 指定透明背景色。
ImageCopyResized: 複製新圖並調整大小。
ImageCreate: 建立新圖。
ImageCreateFromGIF: 取出 GIF 圖型。
ImageCreateFromPNG: 取出 PNG 圖型。
ImageDashedLine: 繪虛線。
ImageDestroy: 結束圖形。
ImageFill: 圖形著色。
ImageFilledPolygon: 多邊形區域著色。
ImageFilledRectangle: 矩形區域著色。
ImageFillToBorder: 指定顏色區域內著色。
ImageFontHeight: 取得字型的高度。
ImageFontWidth: 取得字型的寬度。
ImageGIF: 建立 GIF 圖型。
ImageInterlace: 使用交錯式顯示與否。
ImageLine: 繪實線。
ImageLoadFont: 載入點陣字型。
ImagePNG: 建立 PNG 圖型。
ImagePolygon: 繪多邊形。
ImagePSBBox: 計算 PostScript 文字所佔區域。
ImagePSEncodeFont: PostScript 字型轉成向量字。
ImagePSFreeFont: 卸下 PostScript 字型。
ImagePSLoadFont: 載入 PostScript 字型。
ImagePSText: 寫 PostScript 文字到圖中。
ImageRectangle: 繪矩形。
ImageSetPixel: 繪點。
ImageString: 繪橫式字符串。
ImageStringUp: 繪直式字符串。
ImageSX: 取得圖片的寬度。
ImageSY: 取得圖片的高度。
ImageTTFBBox: 計算 TTF 文字所佔區域。
ImageTTFText: 寫 TTF 文字到圖中。
imap_8bit: 將八位轉成 qp 編碼。
imap_alerts: 所有的警告信息。
imap_append: 附加字符串到指定的郵箱中。
imap_base64: 解 BASE64 編碼。
imap_binary: 將八位轉成 base64 編碼。
imap_body: 讀信的內文。
imap_check: 返回郵箱信息。
imap_clearflag_full: 清除信件標誌。
imap_close: 關閉 IMAP 鏈接。
imap_createmailbox: 建立新的信箱。
imap_delete: 標記欲刪除郵件。
imap_deletemailbox: 刪除既有信箱。
imap_errors: 所有的錯誤信息。
imap_expunge: 刪除已標記的郵件。
imap_fetchbody: 從信件內文取出指定部分。
imap_fetchheader: 取得原始標頭。
imap_fetchstructure: 獲取某信件的結構信息。
imap_getmailboxes: 取得全部信件詳細信息。
imap_getsubscribed: 列出所有訂閱郵箱。
imap_header: 獲取某信件的標頭信息。
imap_headers: 獲取全部信件的標頭信息。
imap_last_error: 最後的錯誤信息。
imap_listmailbox: 獲取郵箱列示。
imap_listsubscribed: 獲取訂閱郵箱列示。
imap_mailboxmsginfo: 取得目前郵箱的信息。
imap_mail_copy: 複製指定信件到它處郵箱。
imap_mail_move: 移動指定信件到它處郵箱。
imap_msgno: 列出 UID 的連續信件。
imap_num_msg: 取得信件數。
imap_num_recent: 取得新進信件數。
imap_open: 打開 IMAP 鏈接。
imap_ping: 檢查 IMAP 是否連接。
imap_qprint: 將 qp 編碼轉成八位。
imap_renamemailbox: 更改郵箱名字。
imap_reopen: 重開 IMAP 鏈接。
imap_rfc822_parse_adrlist: 解析電子郵件位址。
imap_rfc822_write_address: 電子郵件位址標準化。
imap_scanmailbox: 尋找信件有無特定字符串。
imap_search: 搜尋指定標準的信件。
imap_setflag_full: 配置信件標誌。
imap_sort: 將信件標頭排序。
imap_status: 目前的狀態信息。
imap_subscribe: 訂閱郵箱。
imap_uid: 取得信件 UID。
imap_undelete: 取消刪除郵件標記。
imap_unsubscribe: 取消訂閱郵箱。
implode: 將數組變成字符串。
intval: 變量轉成整數類型。
iptcparse: 使用 IPTC 模塊解析位資料。
isset: 判斷變量是否已配置。
is_array: 判斷變量類型是否為數組類型。
is_dir: 測試文件是否為目錄。
is_double: 判斷變量類型是否為倍浮點數類型。
is_executable: 測試文件是否為可執行文件。
is_file: 測試文件是否為正常文件。
is_float: 判斷變量類型是否為浮點數類型。
is_int: 判斷變量類型是否為整數類型。
is_integer: 判斷變量類型是否為長整數類型。
is_link: 測試文件是否為鏈接文件。
is_long: 判斷變量類型是否為長整數類型。
is_object: 判斷變量類型是否為類類型。
is_readable: 測試文件是否可讀取。
is_real: 判斷變量類型是否為實數類型。
is_string: 判斷變量類型是否為字符串類型。
is_writeable: 測試文件是否可寫入。
JDDayOfWeek: 返回日期在周幾。
JDMonthName: 返回月份名。
JDToFrench: 將凱撒日計數轉換成為法國共和曆法。
JDToGregorian: 將凱撒日計數 (Julian Day Count) 轉換成為格裡高裡曆法 (Gregorian date)。
JDToJewish: 將凱撒日計數轉換成為猶太曆法。
JDToJulian: 將凱撒日計數轉換成為凱撒曆法。
JewishToJD: 將猶太曆法轉換成為凱撒日計數。
join: 將數組變成字符串。
JulianToJD: 將凱撒曆法轉換成為凱撒日計數。
key: 取得數組中的索引資料。
ksort: 將數組的元素依索引排序。
ldap_add: 增加 LDAP 名錄的條目。
ldap_bind: 繫住 LDAP 目錄。
ldap_close: 結束 LDAP 鏈接。
ldap_connect: 連上 LDAP 服務器。
ldap_count_entries: 搜尋結果的數目。
ldap_delete: 刪除指定資源。
ldap_dn2ufn: 將 dn 轉成易讀的名字。
ldap_explode_dn: 切開 dn 的字段。
ldap_first_attribute: 取得第一筆資源的屬性。
ldap_first_entry: 取得第一筆結果代號。
ldap_free_result: 釋放返回資料內存。
ldap_get_attributes: 取得返回資料的屬性。
ldap_get_dn: 取得 DN 值。
ldap_get_entries: 取得全部返回資料。
ldap_get_values: 取得全部返回值。
ldap_list: 列出簡表。
ldap_modify: 改變 LDAP 名錄的屬性。
ldap_mod_add: 增加 LDAP 名錄的屬性。
ldap_mod_del: 刪除 LDAP 名錄的屬性。
ldap_mod_replace: 新的 LDAP 名錄取代舊屬性。
ldap_next_attribute: 取得返回資料的下筆屬性。
ldap_next_entry: 取得下一筆結果代號。
ldap_read: 取得目前的資料屬性。
ldap_search: 列出樹狀簡表。
ldap_unbind: 結束 LDAP 鏈接。
leak: 洩出內存。
link: 建立硬式鏈接。
linkinfo: 取得鏈接信息。
list: 列出數組中元素的值。
Log: 自然對數值。
Log10: 10 基底的對數值。
lstat: 取得鏈接文件相關信息。
ltrim: 去除連續空白。
mail: 寄出電子郵件。
max: 取得最大值。
mcrypt_cbc: 使用 CBC 將資料加/解密。
mcrypt_cfb: 使用 CFB 將資料加/解密。
mcrypt_create_iv: 從隨機源將向量初始化。
mcrypt_ecb: 使用 ECB 將資料加/解密。
mcrypt_get_block_size: 取得編碼方式的區塊大小。
mcrypt_get_cipher_name: 取得編碼方式的名稱。
mcrypt_get_key_size: 取得編碼鑰匙大小。
mcrypt_ofb: 使用 OFB 將資料加/解密。
md5: 計算字符串的 MD5 哈稀。
mhash: 計算哈稀值。
mhash_count: 取得哈稀 ID 的最大值。
mhash_get_block_size: 取得哈稀方式的區塊大小。
mhash_get_hash_name: 取得哈稀演算法名稱。
microtime: 取得目前時間的 UNIX 時間戳記的百萬分之一秒值。
min: 取得最小值。
mkdir: 建立目錄。
mktime: 取得 UNIX 時間戳記。
msql: 送出 query 字符串。
msql_affected_rows: 得到 mSQL 最後操作影響的列數目。
msql_close: 關閉 mSQL 數據庫連接。
msql_connect: 打開 mSQL 數據庫連接。
msql_createdb: 建立一個新的 mSQL 數據庫。
msql_create_db: 建立一個新的 mSQL 數據庫。
msql_data_seek: 移動內部返回指針。
msql_dbname: 取得目前所在數據庫名稱。
msql_dropdb: 刪除指定的 mSQL 數據庫。
msql_drop_db: 刪除指定的 mSQL 數據庫。
msql_error: 取得最後錯誤信息。
msql_fetch_array: 返回數組資料。
msql_fetch_field: 取得字段信息。
msql_fetch_object: 返回類資料。
msql_fetch_row: 返回單列的各字段。
msql_fieldflags: 獲得字段的標誌。
msql_fieldlen: 獲得字段的長度。
msql_fieldname: 返回指定字段的名稱。
msql_fieldtable: 獲得字段的資料表 (table) 名稱。
msql_fieldtype: 獲得字段的類型。
msql_field_seek: 配置指針到返回值的某字段。
msql_freeresult: 釋放返回佔用內存。
msql_free_result: 釋放返回佔用內存。
msql_listdbs: 列出可用數據庫 (database)。
msql_listfields: 列出指定資料表的字段 (field)。
msql_listtables: 列出指定數據庫的資料表 (table)。
msql_list_dbs: 列出可用數據庫 (database)。
msql_list_fields: 列出指定資料表的字段 (field)。
msql_list_tables: 列出指定數據庫的資料表 (table)。
msql_numfields: 取得返回字段的數目。
msql_numrows: 取得返回列的數目。
msql_num_fields: 取得返回字段的數目。
msql_num_rows: 取得返回列的數目。
msql_pconnect: 打開 mSQL 服務器持續連接。
msql_query: 送出一個 query 字符串。
msql_regcase: 將字符串逐字返回大小寫字符。
msql_result: 取得查詢 (query) 的結果。
msql_selectdb: 選擇一個數據庫。
msql_select_db: 選擇一個數據庫。
msql_tablename: 返回指定資料表的名稱。
mssql_affected_rows: 取得最後 query 影響的列數。
mssql_close: 關閉與數據庫的連接。
mssql_connect: 連上數據庫。
mssql_data_seek: 移動列指針。
mssql_fetch_array: 返回數組資料。
mssql_fetch_field: 取得字段信息。
mssql_fetch_object: 返回類資料。
mssql_fetch_row: 返回單列的各字段。
mssql_field_seek: 配置指針到返回值的某字段。
mssql_free_result: 釋放返回佔用內存。
mssql_num_fields: 取得返回字段的數目。
mssql_num_rows: 取得返回列的數目。
mssql_pconnect: 打開 MS SQL 服務器持續連接。
mssql_query: 送出一個 query 字符串。
mssql_result: 取得查詢 (query) 的結果。
mssql_select_db: 選擇一個數據庫。
mt_getrandmax: 隨機數的最大值。
mt_rand: 取得隨機數值。
mt_srand: 配置隨機數種子。
mysql_affected_rows: 得到 MySQL 最後操作影響的列數目。
mysql_close: 關閉 MySQL 服務器連接。
mysql_connect: 打開 MySQL 服務器連接。
mysql_create_db: 建立一個 MySQL 新數據庫。
mysql_data_seek: 移動內部返回指針。
mysql_db_query: 送查詢字符串 (query) 到 MySQL 數據庫。
mysql_drop_db: 移除數據庫。
mysql_errno: 返回錯誤信息代碼。
mysql_error: 返回錯誤信息。
mysql_fetch_array: 返回數組資料。
mysql_fetch_field: 取得字段信息。
mysql_fetch_lengths: 返回單列各欄資料最大長度。
mysql_fetch_object: 返回類資料。
mysql_fetch_row: 返回單列的各字段。
mysql_field_flags: 獲得目前字段的標誌。
mysql_field_len: 獲得目前字段的長度。
mysql_field_name: 返回指定字段的名稱。
mysql_field_seek: 配置指針到返回值的某字段。
mysql_field_table: 獲得目前字段的資料表 (table) 名稱。
mysql_field_type: 獲得目前字段的類型。
mysql_free_result: 釋放返回佔用內存。
mysql_insert_id: 返回最後一次使用 INSERT 指令的 ID。
mysql_list_dbs: 列出 MySQL 服務器可用的數據庫 (database)。
mysql_list_fields: 列出指定資料表的字段 (field)。
mysql_list_tables: 列出指定數據庫的資料表 (table)。
mysql_num_fields: 取得返回字段的數目。
mysql_num_rows: 取得返回列的數目。
mysql_pconnect: 打開 MySQL 服務器持續連接。
mysql_query: 送出一個 query 字符串。
mysql_result: 取得查詢 (query) 的結果。
mysql_select_db: 選擇一個數據庫。
mysql_tablename: 取得資料表名稱。
next: 將數組的內部指針向後移動。
nl2br: 將換行字符轉成
。
number_format: 格式化數字字符串。
OCIBindByName: 讓動態 SQL 可使用 PHP 變量。
OCIColumnIsNULL: 測試返回行是否為空的。
OCIColumnSize: 取得字段類型的大小。
OCICommit: 將 Oracle 的交易處理付諸實行。
OCIDefineByName: 讓 SELECT 指令可使用 PHP 變量。
OCIExecute: 執行 Oracle 的指令部分。
OCIFetch: 取得返回資料的一列 (row)。
OCIFetchInto: 取回 Oracle 資料放入數組。
OCILogOff: 關閉與 Oracle 的鏈接。
OCILogon: 打開與 Oracle 的鏈接。
OCINewDescriptor: 初始新的 LOB/FILE 描述。
OCINumRows: 取得受影響字段的數目。
OCIParse: 分析 SQL 語法。
OCIResult: 從目前列 (row) 的資料取得一欄 (column)。
OCIRollback: 撤消當前交易。
OctDec: 八進位轉十進位。
odbc_autocommit: 開關自動改動功能。
odbc_binmode: 配置二進位資料處理方式。
odbc_close: 關閉 ODBC 鏈接。
odbc_close_all: 關閉所有 ODBC 鏈接。
odbc_commit: 改動 ODBC 數據庫。
odbc_connect: 鏈接至 ODBC 數據庫。
odbc_cursor: 取得游標名。
odbc_do: 執行 SQL 指令。
odbc_exec: 執行 SQL 指令。
odbc_execute: 執行預置 SQL 指令。
odbc_fetch_into: 取得返回的指定列。
odbc_fetch_row: 取得返回一列。
odbc_field_len: 取得字段資料長度。
odbc_field_name: 取得字段名稱。
odbc_field_type: 取得字段資料類型。
odbc_free_result: 釋出返回資料的內存。
odbc_longreadlen: 配置返回欄的最大值。
odbc_num_fields: 取得字段數目。
odbc_num_rows: 取得返回列數目。
odbc_pconnect: 長期鏈接至 ODBC 數據庫。
odbc_prepare: 預置 SQL 指令。
odbc_result: 取得返回資料。
odbc_result_all: 返回 HTML 表格資料。
odbc_rollback: 撤消當前交易。
odbc_setoption: 調整 ODBC 配置。
opendir: 打開目錄 handle。
openlog: 打開系統紀錄。
Ora_Bind: 鏈接 PHP 變量到 Oracle 參數。
Ora_Close: 關閉一個 Oracle 的 cursor。
Ora_ColumnName: 得到 Oracle 返回列 (Column) 的名稱。
Ora_ColumnSize: 取得字段類型的大小。
Ora_ColumnType: 得到 Oracle 返回列 (Column) 的類型。
Ora_Commit: 將 Oracle 的交易處理付諸實行。
Ora_CommitOff: 關閉自動執行 Oracle 交易改動的功能。
Ora_CommitOn: 打開自動執行 Oracle 交易改動的功能。
Ora_Do: 快速的 SQL 查詢。
Ora_Error: 獲得 Oracle 錯誤信息。
Ora_ErrorCode: 獲得 Oracle 錯誤代碼。
Ora_Exec: 執行 Oracle 的指令部分。
Ora_Fetch: 取得返回資料的一列 (row)。
Ora_FetchInto: 取回 Oracle 資料放入數組。
Ora_GetColumn: 從返回列 (row) 的資料取得一欄 (column)。
Ora_Logoff: 結束與 Oracle 的鏈接。
Ora_Logon: 打開與 Oracle 的鏈接。
Ora_Numcols: 取得字段的數目。
Ora_Open: 打開 Oracle 的 cursor。
Ora_Parse: 分析 SQL 語法。
Ora_PLogon: 打開與 Oracle 的長期鏈接。
Ora_Rollback: 撤消當前交易。
Ord: 返回字符的序數值。
pack: 壓縮資料到位字符串之中。
parse_str: 解析 query 字符串成變量。
parse_url: 解析 URL 字符串。
passthru: 執行外部程序並不加處理輸出資料。
pclose: 關閉文件。
PDF_add_annotation: 加入註釋。
PDF_add_outline: 目前頁面加入書籤。
PDF_arc: 繪弧。
PDF_begin_page: 啟始 PDF 文件頁面。
PDF_circle: 繪圓。
PDF_clip: 組合所有向量。
PDF_close: 關閉 PDF 文件。
PDF_closepath: 形成封閉的向量形狀。
PDF_closepath_fill_stroke: 形成封閉的向量形狀沿向量繪線並填滿。
PDF_closepath_stroke: 形成封閉的向量形狀並沿向量繪線。
PDF_close_image: 關閉圖文件。
PDF_continue_text: 輸出文字。
PDF_curveto: 繪貝氏曲線。
PDF_endpath: 關閉目前向量。
PDF_end_page: 關閉 PDF 文件頁面。
PDF_execute_image: 放置 PDF 文件中圖片到指定位置。
PDF_fill: 填滿目前的向量。
PDF_fill_stroke: 填滿目前的向量並沿向量繪線。
PDF_get_info: 返回文件信息。
PDF_lineto: 繪直線。
PDF_moveto: 配置處理的坐標點。
PDF_open: 建立新的 PDF 文件。
PDF_open_gif: 打開 GIF 圖文件。
PDF_open_jpeg: 打開 JPEG 圖文件。
PDF_open_memory_image: 打開內存圖文件。
PDF_place_image: 放置圖片到 PDF 文件指定位置。
PDF_put_image: 放置圖片到 PDF 文件。
PDF_rect: 繪長方形。
PDF_restore: 還原環境變量。
PDF_rotate: 旋轉類。
PDF_save: 儲存環境變量。
PDF_scale: 縮放類。
PDF_setdash: 配置虛線樣式。
PDF_setflat: 配置平滑值。
PDF_setgray: 指定繪圖的顏色為灰階並填入。
PDF_setgray_fill: 指定填入的顏色為灰階。
PDF_setgray_stroke: 指定繪圖的顏色為灰階。
PDF_setlinecap: 配置 linecap 參數。
PDF_setlinejoin: 配置連接參數。
PDF_setlinewidth: 配置線寬。
PDF_setmiterlimit: 配置斜邊界限。
PDF_setrgbcolor: 指定繪圖的顏色為彩色並填入。
PDF_setrgbcolor_fill: 指定填入的顏色為彩色。
PDF_setrgbcolor_stroke: 指定繪圖的顏色為彩色。
PDF_set_char_spacing: 配置字符間距。
PDF_set_duration: 配置二頁的切換時間。
PDF_set_font: 配置使用的字型及大小。
PDF_set_horiz_scaling: 配置文字水平間距。
PDF_set_info_author: 配置文件作者。
PDF_set_info_creator: 配置建文件者字符串。
PDF_set_info_keywords: 配置文件的關鍵字。
PDF_set_info_subject: 配置文件主題。
PDF_set_info_title: 配置文件標題。
PDF_set_leading: 配置行距。
PDF_set_text_matrix: 配置文字矩陣。
PDF_set_text_pos: 配置文字位置。
PDF_set_text_rendering: 配置文字表現方式。
PDF_set_text_rise: 配置文字高度。
PDF_set_transition: 配置頁的轉換。
PDF_set_word_spacing: 配置字間距。
PDF_show: 輸出字符串到 PDF 文件。
PDF_show_xy: 輸出字符串到指定坐標。
PDF_stringwidth: 計算字符串的寬度。
PDF_stroke: 沿向量繪線。
PDF_translate: 移動原點。
pfsockopen: 打開網絡的 Socket 持續鏈接。
pg_Close: 關閉 PostgreSQL 服務器連接。
pg_cmdTuples: 取得被 SQL 指令影響的資料筆數。
pg_Connect: 打開 PostgreSQL 服務器連接。
pg_DBname: 取得目前的數據庫名稱。
pg_ErrorMessage: 返回錯誤信息。
pg_Exec: 執行 query 指令。
pg_Fetch_Array: 返回數組資料。
pg_Fetch_Object: 返回類資料。
pg_Fetch_Row: 返回單列的各字段。
pg_FieldIsNull: 檢查字段是否有資料。
pg_FieldName: 返回指定字段的名稱。
pg_FieldNum: 取得指定字段的行數。
pg_FieldPrtLen: 計算可列示的長度。
pg_FieldSize: 計算指定字段的長度。
pg_FieldType: 獲得目前字段的類型。
pg_FreeResult: 釋放返回佔用內存。
pg_GetLastOid: 取得最後的類代碼。
pg_Host: 取得連接機器名稱。
pg_loclose: 關閉大型類。
pg_locreate: 建立大型類。
pg_loopen: 打開大型類。
pg_loread: 讀取大型類。
pg_loreadall: 讀取大型類並輸出。
pg_lounlink: 刪除大型類。
pg_lowrite: 讀取大型類。
pg_NumFields: 取得返回字段的數目。
pg_NumRows: 取得返回列的數目。
pg_Options: 取得連接機器選項。
pg_pConnect: 打開 PostgreSQL 服務器持續連接。
pg_Port: 取得連接機器埠號。
pg_Result: 取得查詢 (query) 的結果。
pg_tty: 取得連接機器終端機。
phpinfo: 返回 PHP 所有相關信息。
phpversion: 返回 PHP 版本信息。
pi: 圓周率。
popen: 打開文件。
pos: 返回數組目前的元素。
pow: 次方。
preg_match: 字符串比對解析。
preg_match_all: 字符串整體比對解析。
preg_replace: 字符串比對解析並取代。
preg_split: 將字符串依指定的規則切開。
prev: 將數組的內部指針往前移動。
print: 輸出字符串。
printf: 輸出格式化字符串。
putenv: 配置系統環境變量。
quoted_printable_decode: 將 qp 編碼字符串轉成 8 位字符串。
QuoteMeta: 加入引用符號。
rand: 取得隨機數值。
range: 建立一個整數範圍的數組。
rawurldecode: 從 URL 專用格式字符串還原成普通字符串。
rawurlencode: 將字符串編碼成 URL 專用格式。
readdir: 讀取目錄 handle。
readfile: 輸出文件。
readgzfile: 讀出壓縮文件。
readlink: 返回符號鏈接 (symbolic link) 目標文件。
recode_file: 記錄文件或文件請求到記錄中。
recode_string: 記錄字符串到記錄中。
register_shutdown_function: 定義 PHP 程序執行完成後執行的函數。
rename: 更改文件名。
reset: 將數組的指針指到數組第一個元素。
rewind: 重置開文件的讀寫位置指針。
rewinddir: 重設目錄 handle。
rmdir: 刪除目錄。
round: 四捨五入。
rsort: 將數組的值由大到小排序。
sem_acquire: 捕獲信號。
sem_get: 取得信號代碼。
sem_release: 釋出信號。
serialize: 儲存資料到系統中。
session_decode: Session 資料解碼。
session_destroy: 結束 session。
session_encode: Session 資料編碼。
session_id: 存取目前 session 代號。
session_is_registered: 檢查變量是否註冊。
session_module_name: 存取目前 session 模塊。
session_name: 存取目前 session 名稱。
session_register: 註冊新的變量。
session_save_path: 存取目前 session 路徑。
session_start: 初始 session。
session_unregister: 刪除已註冊變量。
setcookie: 送出 Cookie 信息到瀏覽器。
setlocale: 配置地域化信息。
settype: 配置變量類型。
set_file_buffer: 配置文件緩衝區大小。
set_magic_quotes_runtime: 配置 magic_quotes_runtime 值。
set_socket_blocking: 切換擱置與無擱置模式。
set_time_limit: 配置該頁最久執行時間。
shm_attach: 打開建立共享內存空間。
shm_detach: 中止共享內存空間鏈接。
shm_get_var: 取得內存空間中指定的變量。
shm_put_var: 加入或更新內存空間中的變量。
shm_remove: 清除內存空間。
shm_remove_var: 刪除內存空間中指定的變量。
shuffle: 將數組的順序弄混。
similar_text: 計算字符串相似度。
Sin: 正弦計算。
sizeof: 獲知數組的大小。
sleep: 暫停執行。
snmpget: 取得指定類識別碼。
snmpwalk: 取得所有類。
snmpwalkoid: 取得網絡本體樹狀信息。
snmp_get_quick_print: 取得 UCD 函數庫中的 quick_print 值。
snmp_set_quick_print: 配置 UCD 函數庫中的 quick_print 值。
solid_close: 關閉 solid 鏈接。
solid_connect: 鏈接至 solid 數據庫。
solid_exec: 執行 SQL 指令。
solid_fetchrow: 取得返回一列。
solid_fieldname: 取得字段名稱。
solid_fieldnum: 取得字段數目。
solid_freeresult: 釋出返回資料的內存。
solid_numfields: 取得字段數目。
solid_numrows: 取得返回列數目。
solid_result: 取得返回資料。
sort: 將數組排序。
soundex: 計算字符串的讀音值
split: 將字符串依指定的規則切開。
sprintf: 將字符串格式化。
sql_regcase: 將字符串逐字返回大小寫字符。
Sqrt: 開平方根。
srand: 配置隨機數種子。
stat: 取得文件相關信息。
strchr: 尋找第一個出現的字符。
strcmp: 字符串比較。
strcspn: 不同字符串的長度。
strftime: 將服務器的時間本地格式化。
StripSlashes: 去掉反斜線字符。
strip_tags: 去掉 HTML 及 PHP 的標記。
strlen: 取得字符串長度。
strpos: 尋找字符串中某字符最先出現處。
strrchr: 取得某字符最後出現處起的字符串。
strrev: 顛倒字符串。
strrpos: 尋找字符串中某字符最後出現處。
strspn: 找出某字符串落在另一字符串遮罩的數目。
strstr: 返回字符串中某字符串開始處至結束的字符串。
strtok: 切開字符串。
strtolower: 字符串全轉為小寫。
strtoupper: 字符串全轉為大寫。
strtr: 轉換某些字符。
strval: 將變量轉成字符串類型。
str_replace: 字符串取代。
substr: 取部份字符串。
sybase_affected_rows: 取得最後 query 影響的列數。
sybase_close: 關閉與數據庫的連接。
sybase_connect: 連上數據庫。
sybase_data_seek: 移動列指針。
sybase_fetch_array: 返回數組資料。
sybase_fetch_field: 取得字段信息。
sybase_fetch_object: 返回類資料。
sybase_fetch_row: 返回單列的各字段。
sybase_field_seek: 配置指針到返回值的某字段。
sybase_free_result: 釋放返回佔用內存。
sybase_num_fields: 取得返回字段的數目。
sybase_num_rows: 取得返回列的數目。
sybase_pconnect: 打開服務器持續連接。
sybase_query: 送出一個 query 字符串。
sybase_result: 取得查詢 (query) 的結果。
sybase_select_db: 選擇一個數據庫。
symlink: 建立符號鏈接 (symbolic link)。
syslog: 紀錄至系統紀錄。
system: 執行外部程序並顯示輸出資料。
Tan: 正切計算。
tempnam: 建立只一的臨時文件。
time: 取得目前時間的 UNIX 時間戳記。
touch: 配置最後修改時間。
trim: 截去字符串首尾的空格。
uasort: 將數組依使用者自定的函數排序。
ucfirst: 將字符串第一個字符改大寫。
ucwords: 將字符串每個字第一個字母改大寫。
uksort: 將數組的索引依使用者自定的函數排序。
umask: 改變目前的文件屬性遮罩 umask。
uniqid: 產生只一的值。
unlink: 刪除文件。
unpack: 解壓縮位字符串資料。
unserialize: 取出系統資料。
unset: 刪除變量。
urldecode: 還原 URL 編碼字符串。
urlencode: 將字符串以 URL 編碼。
usleep: 暫停執行。
usort: 將數組的值依使用者自定的函數排序。
utf8_decode: 將 UTF-8 碼轉成 ISO-8859-1 碼。
utf8_encode: 將 ISO-8859-1 碼轉成 UTF-8 碼。
virtual: 完成apache服務器的子請求 (sub-request)。
vm_addalias: 加入新別名。
vm_adduser: 加入新使用者。
vm_delalias: 刪除別名。
vm_deluser: 刪除使用者。
vm_passwd: 改變使用者密碼。
wddx_add_vars: 將 WDDX 封包連續化。
wddx_deserialize: 將 WDDX 封包解連續化。
wddx_packet_end: 結束的 WDDX 封包。
wddx_packet_start: 開始新的 WDDX 封包。
wddx_serialize_value: 將單一值連續化。
wddx_serialize_vars: 將多值連續化。
xml_error_string: 取得 XML 錯誤字符串。
xml_get_current_byte_index: 取得目前解析為第幾個位組。
xml_get_current_column_number: 獲知目前解析的第幾字段。
xml_get_current_line_number: 取得目前解析的行號。
xml_get_error_code: 取得 XML 錯誤碼。
xml_parse: 解析 XML 文件。
xml_parser_create: 初始 XML 解析器。
xml_parser_free: 釋放解析佔用的內存。
xml_parser_get_option: 取得解析使用的選項。
xml_parser_set_option: 配置解析使用的選項。
xml_set_character_data_handler: 建立字符資料標頭。
xml_set_default_handler: 建立默認標頭。
xml_set_element_handler: 配置元素的標頭。
xml_set_external_entity_ref_handler: 配置外部實體參引的標頭。
xml_set_notation_decl_handler: 配置記法宣告的標頭。
xml_set_object: 使 XML 解析器用類。
xml_set_processing_instruction_handler: 建立處理指令標頭。
xml_set_unparsed_entity_decl_handler: 配置未解析實體宣告的標頭。
yp_errno: 取得先前 YP 操作的錯誤碼。
yp_err_string: 取得先前 YP 操作的錯誤字符串。
yp_first: 返回 map 上第一筆符合的資料。
yp_get_default_domain: 取得機器的 Domain。
yp_master: 取得 NIS 的 Master。
yp_match: 取得指定資料。
yp_next: 指定 map 的下筆資料。
yp_order: 返回 map 的序數。

===================================

2009年6月18日 星期四

JPG/JPEG 檔案格式

這張是從一個論壇抓出來的

JPEG格式
格式:JFIF(JPEG檔的交換格式)
壓縮:JPEG(灰階影像壓縮比約為10:1;彩色影像約為20:1)
以JPEG文件格式保存的圖像實際上是2個不同格式的混合物:JPEG格式規範本身,用來定義圖像的壓縮方法,並且被包在定議分辨率和顏色模式的圖像數據格式之中。Photoshop和實際上每個能讀取和寫入JPEG文件格式的其他應用程序,以 JFIF文件格式(JPEG文件交換格式, JPEG File Interchonge Format)或與JFIF格式非常象的其他格式保存圖像數據。JFIF文件格式只是將一種圖像格或環繞JPEG壓縮的一種簡單方法,它們沒有其他的更多功能。
最初的JFIF文件格式規範史允許8位灰度圖像和24位RGB圖像;但是Adobe『修改」了此種格式,使之也能處理32位CMYK模式的數據。但是,多數版面設計應用程序實際上不能將 CMYK模式的JPEG圖像分離開,所以 Adobe所做的這個修改的意義並不大。JPEG文件格式允許用可變壓縮的方法,保存8位、24位、32位深度的圖像。例如,當以JPEG格式保存一幅 Photoshop圖像時,Photoshop給出了多種保存選項:低壓縮率,中等壓縮率,高壓縮率及最好的分辨率等級別。實驗證明,當進行印刷或在顯示器上觀察時,JPEG一般可將圖像壓縮為原大小的十分之一而看不出明顯差異。圖像會分解成8×8像素圖像單元的小方塊。這種JPEG失真有時會在新聞圖片中發現,這些圖片在進行電子傳輸前被大大地壓縮了,隨後又以高放大倍率進行了印刷。
JPEG使用了有損壓縮格式,這就使它成為迅速顯示圖像並保存較好分辨率的理想格式。也正是由於JPEG格式可以對掃描或自然圖像進行大幅度的壓縮,利於儲存或通過調製解調器進行傳送,所以在Internet上得到了廣泛的應用。
JPEG格式有一個特殊的變種,名為 「Progressive JPEG」。在創建Progressive JPEG 文件肘,數據是這樣安排的:在裝入圖像時,開始只顯示一個模糊的圖像,隨著數據的裝入,圖像逐步變得清晰。
JPEG格式的主要不足之處也正是它的最大優點。也就是說,有損壓縮算法將JPEG只局限於顯示格式,而且每次保存JPEG格式的圖像時都會丟失一些數據。因此,通常只在創作的最後階段以JPEG格式保存一次圖像即可。
JPEG簡介
微處理機中的存放順序有正序(big endian)和逆序(little endian)之分。正序存放就是高位元組存放在前低位元組在後,而逆序存放就是低位元組在前高位元組在後。例如,十六進位數爲A02B,正序存放就是 A02B,逆序存放就是2BA0。摩托羅拉(Motorola)公司的微處理器使用正序存放,而英代爾(Intel)公司的微處理器使用逆序。JPEG文件中的位元組是按照正序排列的。
________________________________________
JPEG委員會在制定JPEG標準時,定義了許多標記(marker)用來區分和識別圖像資料及其相關資訊,但筆者沒有找到JPEG委員會對JPEG文件交換格式的明確定義。直到1998年12月從分析網上具體的JPG圖像來看,使用比較廣泛的還是JPEG文件交換格式(JPEG File Interchange Format,JFIF)版本號爲1.02。這是1992年9月由在C-Cube Microsystems公司工作的Eric Hamilton提出的。此外還有TIFF JPEG等格式,但由於這種格式比較複雜,因此大多數應用程式都支援JFIF文件交換格式。
JPEG文件使用的顔色空間是CCIR 601推薦標準進行的彩色空間(參看第7章)。在這個彩色空間中,每個分量、每個圖元的電平規定爲255級,用8位代碼表示。從RGB轉換成YCbCr空間時,使用下面的精確的轉換關係:
Y = 256 * E'y
Cb = 256 * [E'Cb] + 128
Cr = 256 * [E'Cr] + 128
其中亮度電平E'y和色差電平E'Cb和E'Cb分別是CCIR 601定義的參數。由於E'y的範圍是0~1,E'Cb和E'Cb的範圍是-0.5~+0.5,因此Y, Cb和Cr的最大值必須要箝到255。於是RGB和YCbCr之間的轉換關係需要按照下面的方法計算。
(1) 從RGB轉換成YCbCr
YCbCr(256級)分量可直接從用8位表示的RGB分量計算得到:
Y = 0.299R + 0.587G + 0.114 B
Cb = - 0.1687R - 0.3313G + 0.5B + 128
Cr = 0.5R - 0.4187G - 0.0813B + 128
需要注意的是不是所有圖像文件格式都按照R0,G0,B0,…… Rn,Gn,Bn的次序存儲樣本資料,因此在RGB文件轉換成JFIF文件時需要首先驗證RGB的次序。
(2) 從YCbCr轉換成RGB
RGB分量可直接從YCbCr(256級)分量計算得到:
R = Y + 1.402 (Cr-128)
G = Y - 0.34414 (Cb-128) - 0.71414 (Cr-128)
B = Y + 1.772 (Cb-128)
在JFIF文件格式中,圖像樣本的存放順序是從左到右和從上到下。這就是說JFIF文件中的第一個圖像樣本是圖像左上角的樣本。
文件結構
JFIF文件格式直接使用JPEG標準爲應用程式定義的許多標記,因此JFIF格式成了事實上JPEG文件交換格式標準。JPEG的每個標記都是由2個位元組組成,其前一個位元組是固定值0xFF。每個標記之前還可以添加數目不限的0xFF填充位元組(fill byte)。下面是其中的8個標記:
1. SOI  0xD8           圖像開始
2. APP0 0xE0           JFIF應用資料塊
3. APPn 0xE1 - 0xEF    其他的應用資料塊(n, 1~15)
4. DQT  0xDB           量化表
5. SOF0 0xC0           幀開始
6. DHT  0xC4           霍夫曼(Huffman)表
7. SOS  0xDA           掃描線開始
8. EOI  0xD9           圖像結束
爲使讀者對JPEG定義的標記一目了然,現將JPEG的標記碼列於表6-05,並保留英文解釋。
表6-05 JPEG定義的標記
Symbol
(符號) Code Assignment
(標記代碼) Deforbiddenion
(說明)
Start Of Frame markers, non-hierarchical Huffman coding
SOF0 0xFFC0 Baseline DCT
SOF1 0xFFC1 Extended sequential DCT
SOF2 0xFFC2 Progressive DCT
SOF3 0xFFC3 Spatial (sequential) lossless
Start Of Frame markers, hierarchical Huffman coding
SOF5 0xFFC5 Differential sequential DCT
SOF6 0xFFC6 Differential progressive DCT
SOF7 0xFFC7 Differential spatial lossless
Start Of Frame markers, non-hierarchical arithmetic coding
JPG 0xFFC8 Reserved for JPEG extensions
SOF9 0xFFC9 Extended sequential DCT
SOF10 0xFFCA Progressive DCT
SOF11 0xFFCB Spatial (sequential) Lossless
Start Of Frame markers, hierarchical arithmetic coding
SOF13 0xFFCD Differential sequential DCT
SOF14 0xFFCE Differential progressive DCT
SOF15 0xFFCF Differential spatial Lossless
Huffman table specification
DHT 0xFFC4 Define Huffman table(s)
arithmetic coding conditioning specification
DAC 0xFFCC Define arithmetic conditioning table
Restart interval termination
RSTm 0xFFD0~0xFFD7 Restart with modulo 8 counter m
Other marker
SOI 0xFFD8 Start of image
EOI 0xFFD9 End of image
SOS 0xFFDA Start of scan
DQT 0xFFDB Define quantization table(s)
DNL 0xFFDC Define number of lines
DRI 0xFFDD Define restart interval
DHP 0xFFDE Define hierarchical progression
EXP 0xFFDF Expand reference image(s)
APPn 0xFFE0~0xFFEF Reserved for application use
JPGn 0xFFF0~0xFFFD Reserved for JPEG extension
COM 0xFFFE Comment
Reserved markers
TEM 0xFF01 For temporary use in arithmetic coding
RES 0xFF02~0xFFBF Reserved
JPEG文件由下面的8個部分組成:
(1) 圖像開始SOI(Start of Image)標記
(2) APP0標記(Marker)
① APP0長度(length)
② 識別字(identifier)
③ 版本號(version)
④ X和Y的密度單位(units=0:無單位;units=1:點數/英寸;units=2:點數/釐米)
⑤ X方向圖元密度(X density)
⑥ Y方向圖元密度(Y density)
⑦ 縮略圖水平圖元數目(thumbnail horizontal pixels)
⑧ 縮略圖垂直圖元數目(thumbnail vertical pixels)
⑨ 縮略圖RGB點陣圖(thumbnail RGB bitmap)
(3) APPn標記(Markers),其中n=1~15(任選)
① APPn長度(length)
② 由於詳細資訊(application specific information)
(4) 一個或者多個量化表DQT(difine quantization table)
① 量化表長度(quantization table length)
② 量化表數目(quantization table number)
③ 量化表(quantization table)
(5) 幀圖像開始SOF0(Start of Frame)
① 幀開始長度(start of frame length)
② 精度(precision),每個顔色分量每個圖元的位元數(bits per pixel per color component)
③ 圖像高度(image height)
④ 圖像寬度(image width)
⑤ 顔色分量數(number of color components)
⑥ 對每個顔色分量(for each component)
o ID
o 垂直方向的樣本因數(vertical sample factor)
o 水平方向的樣本因數(horizontal sample factor)
o 量化表號(quantization table#)
(6) 一個或者多個霍夫曼表DHT(Difine Huffman Table)
① 霍夫曼表的長度(Huffman table length)
② 類型、AC或者DC(Type, AC or DC)
③ 索引(Index)
④ 位表(bits table)
⑤ 值表(value table)
(7) 掃描開始SOS(Start of Scan)
① 掃描開始長度(start of scan length)
② 顔色分量數(number of color components)
③ 每個顔色分量
o ID
o 交流係數表號(AC table #)
o 直流係數表號(DC table #)
④ 壓縮圖像資料(compressed image data)
(8) 圖像結束EOI(End of Image)
表6-06表示了APP0域的詳細結構。有興趣的讀者可通過UltraEdit或者PC TOOLS等工具軟體打開一個JPG圖像文件,對APP0的結構進行分析和驗證。
表6-06 JFIF格式中APP0域的詳細結構
偏移 長度 內容 塊的名稱 說明
0 2 byte 0xFFD8 (Start of Image,SOI) 圖像開始
2 2 byte 0xFFE0 APP0(JFIF application segment) JFIF應用資料塊
4 2 bytes   length of APP0 block APP0塊的長度
6 5 bytes   "JFIF"+"0" 識別APP0標記
11 1 byte   主要版本號(如版本1.02中的1)
12 1 byte   次要版本號(如版本1.02中的02)
13 1 byte  
and Y densities> X和Y的密度單位
units=0:無單位
units=1:點數/英寸
units=2:點數/釐米
14 2 bytes   水平方向圖元密度
16 2 bytes   垂直方向圖元密度
18 1 byte   縮略圖水平圖元數目
19 1 byte   縮略圖垂直圖元數目
3n   <> 縮略RGB點陣圖(n爲縮略圖的圖元數)
Optional JFIF extension APP0 marker segment(s) 任選的JFIF擴展APP0標記段
……   ……  
2 byte 0xFFD9 (EOI) end-of-file 圖像文件結束標記


===================================

如果有侵犯到您的權利 請告知 會馬上刪除