『壹』 php 編碼格式
你的DW編碼是GB2312
頁面輸出的是UTF-8
肯定亂碼的啊
把編碼都統一才行
header("Content-Type: text/html; charset=utf-8");
這里改成
header("Content-Type: text/html; charset=gbk");
『貳』 php 一般設默認編碼是什麼
也可以給每個文件設置默認編碼,但是比較麻煩,不建議這樣做。建議直接找到配置文件,然後將編碼格式設置成自己需要的類型即可。
『叄』 什麼是PHP中的值什麼是PHP中的鍵
ID 是 是某個體系中相對唯一的編碼,在php的數組中叫做key
一個key(鍵)對應一個value(值)
php的數組並不是其他語言中數組的意義,因為其他強類型的語言數組一般都是定長,並且 下標 是固定的數字排列。而php的數組(內部實現是用類)的下標(key)可以是數字,也可以是其他的任何 標量 (數字,字元串等),而且當數組的key是數字的時候也可以不連續。如 4,6,7,9,這樣的下標。
$_POST $_GET 都是系統內定的數組
而傳值就是裡面的一個變數。
$_POST['這里是表單中的屬性name的值'] // 這個表達式的值是 表單中屬性value的值
所以,這里理解的ID並不是單純的數字下標,而是能夠代表一個數組內容的實際的key
『肆』 php設置編碼的頭文件怎樣寫
php設置編碼默認就是utf8編碼
utf編碼 :header("Content-type: text/html; charset=utf-8");
gbk編碼 :header("Content-type: text/html; charset=gb2312");
big5編碼 :header("Content-type: text/html; charset=big5");
注意事項:通常情況以上代碼放在php頁面的首頁。
(4)php唯一編碼擴展閱讀:
PHP優勢
1.開放的源代碼:所有的PHP源代碼事實上都可以得到。
2.免費的:和其它技術相比,PHP本身免費且是開源代碼。
3.快捷性:程序開發快,運行快,技術本身學習快。
4.跨平台性強:PHP是運行在伺服器端的腳本,可運行在UNIX、LINUX、WINDOWS、Mac OS下。
5.效率高:PHP消耗相當少的系統資源。
6.圖像處理:用PHP動態創建圖像。
7.面向對象:在php4,php5中,面向對象方面都有了很大的改進,php完全可以用來開發大型商業程序。
8.專業專註:PHP支持腳本語言為主,同為類C語言。
『伍』 PHP中文編碼~~
一、頁面編碼
1. 使用 <META http-equiv="content-type" content="text/html; charset=xxx"> 標簽設置頁面編碼
這個標簽的作用是聲明客戶端的瀏覽器用什麼字元集編碼顯示該頁面,xxx可以為GB2312,GBK,UTF-8(和MySQL不同,MySQL是 UTF8)等等。因此,大部分頁面可以採用這種方式來告訴瀏覽器顯示這個頁面的時候採用什麼編碼,這樣才不會造成編碼錯誤而產生亂碼。但是有的時候我們會發現有了這句還是不行,不管xxx是哪一種,瀏覽器採用的始終都是一種編碼,這個情況我後面會談到。
請注意,<meta>是屬於html信息的,僅僅是一個聲明,它起作用表明伺服器已經把HTML信息傳到了瀏覽器。
2. header("content-type:text/html; charset=xxx");
這個函數header()的作用是把括弧裡面的信息發到http標頭。
如果括弧裡面的內容為文中所說那樣,那作用和<META>標簽基本相同,大家對照第一個看發現字元都差不多的。但是不同的是如果有這段函數,瀏覽器就會永遠採用你所要求的xxx編碼,絕對不會不聽話,因此這個函數是很有用的。為什麼會這樣呢?那就得說說HTTPS標頭和HTML信息的差別了:
https標頭是伺服器以HTTP協議傳送HTML信息到瀏覽器前所送出的字串。
因為meta標簽是屬於html信息的,所以header()發送的內容先到達瀏覽器,通俗點就是header()的優先順序高於meta(不知道可不可以這樣講)。加入一個php頁面既有header("content-type:text/html; charset=xxx"),又有<META http-equiv="content-type" content="text/html; charset=xxx">,瀏覽器就只認前者http標頭而不認meta了。當然這個函數只能在php頁面內使用。
同樣也留有一個問題,為什麼前者就絕對起作用,而後者有時候就不行呢?這就是接下來要談的Apache的原因了。
3. AddDefaultCharset
Apache 根目錄的 conf 文件夾里,有整個Apache的配置文檔httpd.conf。
用文本編輯器打開httpd.conf,第708行(不同版本可能不同)有AddDefaultCharset xxx,xxx為編碼名稱。這行代碼的意思:設置整個伺服器內的網頁文件https標頭里的字元集為你默認的xxx字元集。有這行,就相當於給每個文件都加了一行header("content-type:text/html; charset=xxx")。這下就明白為什麼明明meta設置了是utf-8,可瀏覽器始終採用gb2312的原因。
如果網頁里有header("content-type:text/html; charset=xxx"),就把默認的字元集改為你設置的字元集,所以這個函數永遠有用。如果把AddDefaultCharset xxx前面加個「#」,注釋掉這句,而且頁面里不含header("content-type…"),那這個時候就輪到meta標簽起作用了。
4. default_charset
在 php.ini 文件中可以定義 php 的默認語言: default_charset = "xxx",xxx為編碼名稱。這行代碼的意思是設置所有 php 的輸出頁面編碼為 xxx。
總結:
以上 4 種編碼設置方法的優先順序如下:
header("content-type:text/html; charset=xxx")
default_charset xxx
AddDefaultCharset xxx
<META http-equiv="content-type" content="text/html; charset=xxx">
如果你是web程序員,給你的每個頁面都加個header("content-type:text/html; charset=xxx"),保證它在任何伺服器都能正確顯示,可移植性強。
至於那句AddDefaultCharset xxx,要不要注釋就仁者見仁了。反正我是注釋掉了,不過我寫頁子也要寫header(),便於放到伺服器上能正常顯示。
二、資料庫編碼
PHP 程序在查詢資料庫之前,首先執行 mysql_query(「SET NAMES xxxx」);其中 xxxx 是你網頁的編碼(charset=xxxx),如果網頁中 charset=utf8,則 xxxx=utf8,如果網頁中 charset=gb2312,則xxxx=gb2312,幾乎所有WEB程序,都有一段連接資料庫的公共代碼,放在一個文件里,在這文件里,加入mysql_query(「set names」)就可以了。
SET NAMES 顯示客戶端發送的 SQL 語句中使用什麼字元集。因此,SET NAMES 'utf-8'語句告訴伺服器「將來從這個客戶端傳來的信息採用字元集utf-8」。它還為伺服器發送回客戶端的結果指定了字元集。(例如,如果你使用一個SELECT語句,它表示列值使用了什麼字元集。)
三、中文文件名
默認情況下,文件名為中文時不能訪問。要使中文文件名能正常訪問,需進行如下設置:
在ie中選擇 工具 -> internet選項 -> 高級 -> 取消「總是以UTF-8發送URL」。
『陸』 PHP中哪個函數可以強制統一設置所有字元編碼為指定編碼
一般都是utf-8和gbk,gbk的一般沒有什麼問題。
utf-8最好在apache服務端就設定為utf-8。然後其他的地方,資料庫、文件都設置為UTF-8,就不會有錯了。
在php函數庫有一個函數:iconv(),iconv函數庫能夠完成各種字元集間的轉換,是php編程中不可缺少的基礎函數庫。
最近在做一個小偷程序,需要用到iconv函數把抓取來過的utf-8編碼的頁面轉成gb2312, 發現只有用iconv函數把抓取過來的數據一轉碼數據就會無緣無故的少一些。 讓我郁悶了好一會兒,去網上一查資料才知道這是iconv函數的一個bug。iconv在轉換字元"—"到gb2312時會出錯。
php編程技術:
PHP是一種易於學習和使用的伺服器端腳本語言。只需要很少的編程知識你就能使用PHP建立一個真正交互的WEB站點。 PHP是能讓你生成動態網頁的工具之一。PHP網頁文件被當作一般HTML網頁文件來處理並且在編輯時你可以用編輯HTML的常規方法編寫PHP。
『柒』 php是什麼
PHP(PHP:Hypertext Prerocessor)是一種在電腦上執行的腳本語言,主要是用途在於處理動態網頁,也包含了命令行執行介面(command line interface),或者產生圖形使用者介面(GUI)程序。[1]
PHP 最早由 Rasmus Lerdorf 在1995年發明,現在PHP實質上的標准由PHP Group和開放源代碼社群維護。PHP 以 PHP License 作為許可協議,不過因為這個協議限制了PHP名稱的使用,所以和開放源代碼許可協議GPL不相容。[2]
PHP 目前被廣泛的應用,特別是在伺服器端的網頁程序開發。一般來說 PHP 大多執行在網頁伺服器上,透過執行PHP程序碼來產生使用者瀏覽的網頁。PHP 幾乎可以在任何的操作系統上執行,而且使用 PHP 完全是免費的。根據2007年4月的統計資料,PHP 已經被安裝在超過2000萬個網站和100萬台伺服器上[3]。
目錄 [隱藏]
1 開發歷史
1.1 版本歷程
2 應用
3 語法
3.1 類型
3.2 變數
3.3 面向對象
4 PHP相關資源
4.1 函數庫
4.2 源代碼編碼和加速
4.3 樣板引擎
5 未來發展
5.1 PHP 5.3
6 參考資料
7 外部鏈接
[編輯] 開發歷史
PHP 的發明人 Rasmus Lerdorf
Zend Technologies的創辦人之一 - Andi GutmansFile:Zeev Suraski.jpg
Zend Technologies的創辦人之一 - Zeev SuraskiPHP 原本的簡稱為 Personal Home Page[4],是Rasmus Lerdorf 為了要維護個人網頁,而用c語言開發的一些CGI工具程序集,來取代原先使用的 Perl 程序。最初這些工具程序用來顯示 Rasmus Lerdorf 的個人履歷,以及統計網頁流量[5]。他將這些程序和一些表單直譯器整合起來,稱為 PHP/FI。PHP/FI 可以和資料庫連接,產生簡單的動態網頁程序。Rasmus Lerdorf 在1995年6月8日將 PHP/FI 公開釋出,希望可以透過社群來加速程序開發與尋找錯誤[6]。這個釋出的版本命名為 PHP 2,已經有今日 PHP 的一些雛型,像是類似 Perl 的變數命名方式、表單處理功能、以及嵌入到 HTML 中執行的能力。程序語法上也類似 Perl,有較多的限制,不過更簡單、更有彈性。[5]
在1997年,任職於 Technion IIT 公司的兩個以色列程序設計師:Zeev Suraski 和 Andi Gutmans,重寫了 PHP 的剖析器,成為 PHP 3 的基礎,而 PHP 也在這個時候改稱為PHP: Hypertext Preprocessor.[5]。經過幾個月測試,開發團隊在1997年11月釋出了 PHP/FI 2,隨後就開始 PHP 3 的開放測試,最後在1998年6月正式釋出 PHP 3。Zeev Suraski 和 Andi Gutmans 在 PHP 3 釋出後開始改寫 PHP 的核心,這個在1999年釋出的剖析器稱為 Zend Engine[7],他們也在以色列的 Ramat Gan 成立了 Zend Technologies 來管理 PHP 的開發。[5]
在2000年5月22日,以Zend Engine 1.0為基礎的PHP 4正式釋出,2004年7月13日則釋出了PHP 5,PHP 5則使用了第二代的Zend Engine[5]。PHP包含了許多新特色,像是強化的面向對象功能、引入PDO(PHP Data Objects,一個存取資料庫的延伸函數庫)、以及許多效能上的增強[8]。目前PHP 4已經不會繼續更新,以鼓勵用戶轉移到PHP 5。[9][10]
2008年PHP 5成為了PHP唯一的有在開發的PHP版本。將來的PHP 5.3將會加入Late static binding和一些其他的功能強化[11][12] 。PHP 6 的開發也正在進行中,主要的改進有移除register_globals[13]、magic quotes 和 Safe mode的功能。[9][14]
[編輯] 版本歷程
代表意義
紅色 舊版;官方停止支持
黃色 舊版;官方維護中
綠色 目前版本
藍色 未來版本
主要版本 次要版本 釋出日期 說明
1.0 1.0.0 1995年6月8日 正式名稱為"Personal Home Page Tools (PHP Tools)",第一次使用了"PHP"的名字。[5]
2.0 2.0.0 1994年4月16日 針對PHP 1.0的改進版,速度更快、體積更小,更容易產生動態網頁。[5]
3.0 3.0.0 1998年6月6日 開發方式改成多人共同參與。Zeev Suraski 和 Andi Gutmans 為了這個版本重寫了剖析引擎。[5]
4.0 4.0.0 2000年5月22日 改成以Zend引擎作為剖析器,具有兩階段剖析/標簽剖析系統等先進功能。[15]
4.1.0 2001年12月10日 加入"超全域變數"(superglobals)功能,包含了$_GET、$_POST、 $_SESSION等[15]
4.2.0 2002年4月22日 默認取消register_globals功能。從網路接收的資料將不會設定成全域變數,增加程序安全性[15]。
4.3.0 2002年12月27日 加入命令行執行檔,稱為CLI。[15]
4.4.0 2005年7月11日 Added man pages for phpize and php-config scripts.[15]
4.4.8 2008年1月3日 Several security enhancements and bug fixes. Was to be the end of life release for PHP 4. Security updates only until 2008-08-08, if necessary.[16]
4.4.9 2008年8月7日 More security enhancements and bug fixes. The last release of the PHP 4.4 series.[17][18]
5.0 5.0.0 2004年7月13日 Zend Engine II with a new object model.[19]
5.1.0 2005年11月24日 Performance improvements with introction of compiler variables in re-engineered PHP Engine.[19]
5.2.0 2006年11月2日 Enabled the filter extension by default.[19]
5.2.8 2008年12月8日[20] emergent bug fix[20]
5.2.9 2009年2月26日[21] 這個版本解決了5.2.*的超過了50多個錯誤和多個安全問題,增加了穩定性。[21]
5.2.9-2(Windows) 2009年3月10日[22] 這個版本解決了在Windows系統下OpenSSL的安全缺陷,與其綁定的OpenSSL版本升級到0.9.8k。[22]
5.3.0 預計2009年第二季[23] 支持命名空間; 使用XMLReader和XMLWriter增強XML支持; 支持SOAP ,[24] 延遲靜態綁定, 跳轉標簽(有限的 goto), 閉包,Native PHP archives
6.0 6.0.0 ??? 支持Unicode; 移除ereg擴展, 'register_globals', 'magic_quotes' 和 'safe_mode'; Alternative PHP Cache;Removal of mime_magic and rewrite of fileinfo() for better MIME support[25]
[編輯] 應用
PHP 是一個應用范圍很廣的語言,特別是在網路程序開發方面。一般來說 PHP 大多在伺服器端執行,透過執行 PHP 的程序碼來產生網頁提供瀏覽器讀取,此外也可以用來開發命令行腳本程序和使用者端的GUI應用程序。PHP可以在許多的不同種的伺服器、操作系統、平台上執行,也可以和許多資料庫系統結合。使用 PHP 不需要任何費用,官方組織 PHP Group 提供了完整的程序源代碼,允許使用者修改、編譯、擴充來使用。[26]
[編輯] 語法
PHP的語法參考了Perl、C語言,而且可以整合在HTML之中,以下是一個簡單的Hello World程序:
<?php
echo 'Hello World!';
?>
PHP剖析引擎只剖析<?php到?>之間的程序碼,而不包含在<?php到?>之間的內容則會直接送出,所以可以用以下的方式來將PHP程序碼嵌入在HTML之中:
<?php
//-PHP程式碼
?>
html內容
<?php
//-PHP程式碼
?>
但是在判斷語句中的HTML代碼並不會被直接送出:
<?php
if (false) {
?>
HTML Code
<?php
}
?>
PHP可以用三種註解的形式:C與C++所使用的「/*...*/」與「//」,和Perl的「#」。
[編輯] 類型
PHP主要有以下四種變數類型:
整數 (integer)
浮點數 (float)
布爾數 (boolean)
字串 (string)
兩種復合類型:
陣列 (array)
物件 (object)
兩種特殊類型
NULL
資源 (resource)[27]
[編輯] 變數
PHP中,變數以「$」後接變數名稱來表示。變數名稱區分大小寫。有效的變數名稱以字母或底線開頭,後接任意數目的字母、數字或底線。[28]
[編輯] 面向對象
PHP從PHP 3開始有了基本的面向對象的特性,但直到PHP 5將面向對象部份重新改寫之後,PHP的面向對象功能才比較完善。現在PHP可以說是一個有完整面向對象功能的語言。
[編輯] PHP相關資源
[編輯] 函數庫
主條目:PHP函數庫列表
內建多樣化的函數是PHP主要的特點之一,這些開放程序碼的函數提供了各種不同的功能,例如檔案處理、FTP、字串處理、等等。這些函數的使用方法和C語言相近(例如printf),這也是PHP廣為流行的原因之一。
除了內建的函數之外,PHP也提供了很多延伸函數庫(extension),像是各種資料庫連接函數、資料壓縮函數、圖形處理等等。有些延伸函數庫需要從PECL(PHP Extension Community Library)取得。
[編輯] 源代碼編碼和加速
PHP源代碼是可以直接讀取的,即使放到伺服器上執行也是一樣。雖然讓PHP多了彈性,但相對的會造成安全危機和性能下降的問題。
透過PHP編碼器,可以保護PHP的源代碼不被讀取(對商業軟體來說特別有需求),也可以提升執行的效能。有許多公司或團體開發PHP的編碼器,將PHP程序編譯成位元組碼(byte code),再透過伺服器上安裝對應的程序來執行PHP腳本。
除了透過編碼器加速之外,PHP還可以透過動態的快取機制來提升速度,加速工具有商業版的,例如Zend Platform,也有開放源代碼的加速軟體如eAccelerator、APC、XCache。
[編輯] 樣板引擎
樣板引擎讓PHP應用程序可以做邏輯和使用介面上的分離,讓程序開發更容易進行,目前比較受歡迎的樣板引擎是PHP官方開發的Smarty。不過樣板引擎有效能上的爭議,因為PHP本身就是一個樣板引擎,使用樣板引擎反而變成「重新發明了輪子」(reinventing the wheel)。樣板引擎最主要的好處就是讓不懂PHP程序碼的人也可以參與使用介面的開發,因為樣板引擎的語言遠比PHP簡單。
[編輯] 未來發展
[編輯] PHP 5.3
命名空間(namespaces)原本預計在PHP 6提供支持,現在可能改至PHP 5.3就支持[29