php基礎(chǔ)語法

php基礎(chǔ)教程 (PHP for the Web: Visual QuickStart Guide (4th Edition) )
此文只是上書的閱讀筆記,不適合他人做參考學(xué)習(xí).
本書進階版:PHP與MySQL動態(tài)網(wǎng)站開發(fā)(第4版)(同一作者)

1 變量名

所有的變量名必須以美元符號($)開頭;
在美元符號后的第一個字符必須為字母(A~Z岔乔,a~z)或者下劃線()艘款,不能使用數(shù)字胧谈;
所有的變量名必須以美元符號($)開頭积锅; ?在美元符號后的第一個字符必須為字母(A~Z魂角,a~z)或者下劃線(
)撬讽,不能使用數(shù)字族展;

2 索引數(shù)組 關(guān)聯(lián)數(shù)組

數(shù)組使用鍵來創(chuàng)建和檢索它們保存的值审葬,其結(jié)果構(gòu)成為一系列鍵-值對深滚,看上去像是一個兩列的數(shù)據(jù)表。有趣的是涣觉,在PHP中的數(shù)組結(jié)構(gòu)非常靈活痴荐,它的鍵和值都可以使用數(shù)值或者字符串類型。數(shù)組甚至不必在此方面保持一致性(在第7章接觸到具體示例時官册,你就會明白這里所說的意思)生兆。

PHP有兩種數(shù)組類型,區(qū)別在于鍵的格式膝宁。如果一個數(shù)組使用數(shù)值作為鍵(參見表2-5)那么它就是索引數(shù)組鸦难,如果它使用字符串作為鍵(參見表2-6),那么就是關(guān)聯(lián)數(shù)組员淫。在任何一種情況下合蔽,數(shù)組中的值都可以是任何變量類型(字符串、數(shù)值或者其他類型)介返。

3理解引號

PHP允許使用單引號(')和雙引號(")辈末,但是它們將導(dǎo)致截然不同的結(jié)果。理解這一點是非常重要的映皆,因此在接下來的示例中將演示使用這兩種引號的區(qū)別。

規(guī)則描述如下:使用單引號引用的內(nèi)容將照字面意思進行處理轰枝,而被雙引號引用的內(nèi)容需要進行推斷捅彻。也就是說,雙引號引用的變量名將被它的值所替代鞍陨,正如在腳本2-3中看到的那樣步淹。但單引號引用的變量名不會被替代。

4GET 和 POST

GET和POST之間的區(qū)別在于將信息從表單向處理信息的腳本傳遞的方式诚撵。

GET將所有的信息聚集起來并作為URL的一部分進行傳遞缭裆,而POST并不讓用戶看到傳遞的信息。

一般來說寿烟,從服務(wù)器上請求信息時澈驼,使用GET請求。幾乎所有用于搜索的頁面都會使用GET(當(dāng)你使用搜索引擎時筛武,看一下它的URL)缝其,就像那些分頁顯示結(jié)果的頁面一樣(比如分類瀏覽產(chǎn)品)挎塌。相反,POST一般用于觸發(fā)基于服務(wù)器的行為内边,比如提交一張聯(lián)系表(發(fā)送Email)或提交某個博客的評論(評論添加到數(shù)據(jù)庫和該博客的頁面上)榴都。

無論表單使用什么method,你都可以在預(yù)定義的$_REQUEST變量中訪問表單數(shù)據(jù)漠其。然而嘴高,$_GET和$_POST更明確,所以更可取和屎。

5表單

表單最重要的兩個元素 action method

6格式化數(shù)值

有兩個函數(shù)適合達到格式化數(shù)值的目的拴驮。
第一個是round(),它用于對數(shù)值截取特定位數(shù)的小數(shù)眶俩。函數(shù)的第一個參數(shù)是需要格式化的數(shù)值莹汤,它既可以是一個數(shù)字,也可以是一個存有數(shù)值的變量颠印。第二個參數(shù)是可選的纲岭,它代表需要取的小數(shù)位數(shù)。例如:round (4.30); // 4
round (4.289, 2); // 4.29
$num = 236.26985;
round ($num); // 236

另外一個可以用來格式化數(shù)值的函數(shù)是number_format()线罕。number_format()同round()的工作方式類似止潮,它有一個數(shù)值參數(shù)(或者有數(shù)字值的變量)以及一個可選的小數(shù)位數(shù)指定參數(shù)。這個函數(shù)通過千位分組來格式化數(shù)字钞楼,格式化的效果通常如下所示:
number_format (428.4959, 2); // 428.50
number_format (428, 2); // 428.00
number_format (123456789); // 123,456,789

出于一些復(fù)雜的原因喇闸,round()函數(shù)對于“精確”半數(shù)的情況(0.5、0.05询件、0.005等)燃乍,舍去和進上的次數(shù)是一半對一半,四舍六入五成雙.

number_format()函數(shù)接受兩個可選參數(shù),這兩個參數(shù)分別用來指定使用什么字符代表小數(shù)點位數(shù)和千分號宛琅。這是非常有用的刻蟹,例如,在某些文化的習(xí)慣中嘿辟,將1 000.89寫為1.00089舆瘪。如果希望使用這些選項,請參看PHP手冊中相關(guān)的語法描述红伦。

7n12br 處理換行符

字符串中的換行符通常給PHP開發(fā)新手帶來一些問題英古。用戶可以在textarea表單元素中用敲擊Return或者Enter的方式輸入多行文本。每次敲擊Return或者Enter的結(jié)果在字符串中都相當(dāng)于產(chǎn)生一個換行符昙读。這些換行符在textarea中會起作用召调,但是在PHP頁面呈現(xiàn)中將不會產(chǎn)生任何效果.

8 HTML和PHP (PHP是一項被頻繁用來向Web瀏覽器發(fā)送數(shù)據(jù)的服務(wù)器端技術(shù))

數(shù)據(jù)將從一個HTML表單中輸入,然后使用PHP在Web瀏覽器上打印出來。一個潛在的問題是某残,用戶可以在表單中輸入HTML字符国撵,這將會對頁面的格式產(chǎn)生影響,或許還會導(dǎo)致更糟的結(jié)果玻墅,從而引發(fā)安全方面的問題介牙。
可以使用一些PHP函數(shù)來處理PHP字符串變量中的HTML標(biāo)簽。
?htmlspecialchars()將特定的HTML標(biāo)簽轉(zhuǎn)換為實體版本澳厢。
?htmlentities()將所有的HTML標(biāo)簽轉(zhuǎn)換為實體版本环础。
?strip_tags()移除所有的HTML和PHP標(biāo)簽。

9 字符串的編碼和解碼

urlencode()函數(shù)可以通過URL安全地將任意值傳送到PHP腳本剩拢。顧名思義线得,這個函數(shù)接受一個字符串,并對之編碼(en-code)(改變它的格式)徐伐,以便它完全適合作為URL的一部分傳輸贯钩。這個函數(shù)用加號(+)替換掉空格,并且將特殊字符(如省略號)轉(zhuǎn)換為較少出現(xiàn)問題的形式办素。

從表單直接發(fā)送的值角雷,在被發(fā)送之前會自動進行URL—編碼,接收腳本收到后再對其進行解碼性穿。

10字符串的加密和解密

可以使用crypt()函數(shù)來對數(shù)據(jù)進行加密勺三,但是請注意沒有解密選項可用(它是一種單向加密方式)。因此需曾,可以用它來對密碼進行加密并且保存吗坚,但是無法確定解碼值。在Web應(yīng)用程序中使用這個函數(shù)呆万,可以在注冊的時候?qū)τ脩裘艽a進行加密商源,然后當(dāng)用戶登錄時,他們輸入的密碼同樣會被加密谋减,并且會對密碼的兩個加密版本進行對比炊汹。crypt()的語法如下:$data = crypt($data);

如果數(shù)據(jù)被存儲在數(shù)據(jù)庫中,也可以使用數(shù)據(jù)庫應(yīng)用程序(例如MySQL逃顶、PostgreSQL、Oracle或者SQL Server)中的內(nèi)置函數(shù)來執(zhí)行加密和解密充甚。大多數(shù)技術(shù)都提供單向或者雙向的加密工具以政,但還取決于你所使用的技術(shù)。

11創(chuàng)建模板,使用外部文件

可以將頁面劃分成特定的元素伴找,然后使用特定的函數(shù)將它們合并到主PHP頁面中盈蛮,這樣可以節(jié)省開發(fā)時間。需要使用的函數(shù)有include()和require():
include ('file.php'); 警告
require ('file.html');終止

這兩個函數(shù)的工作方式相同技矮,它們的區(qū)別也不是很大:如果include()函數(shù)失敗了抖誉,PHP腳本會生成一個警告(參見圖8-7)殊轴,但繼續(xù)運行。相反袒炉,如果require()失敗了旁理,它會終止腳本的執(zhí)行

12常量

define();

13時間

date()函數(shù)可以接受另一個參數(shù),這個參數(shù)稱作時間戳(timestamp)我磁。
時間戳是一個數(shù)字孽文,表示從1970年1月1日午夜起計算的秒數(shù)——這一時刻也稱作epoch。
time()函數(shù)可以返回當(dāng)前時刻的時間戳夺艰。
mktime()函數(shù)可以返回一個給定的時間和日期的時間戳:
mktime(hour, minute, second, month, day, year);
因此下面的代碼:$ts = mktime(12, 30, 0, 11, 5, 2011);
可以將從epoch到2011年11月5日12:30經(jīng)過的秒數(shù)賦值給$ts變量芋哭。這個數(shù)值可以傳遞給date()函數(shù),如下所示:date('D', $ts);這會返回Sat郁副,它是用3個字母表示的一周中的某一天减牺。

由于PHP是一種服務(wù)器端的技術(shù),因此這些函數(shù)反映的是服務(wù)器上的日期和時間存谎。要獲取客戶端(換句話說拔疚,就是用于瀏覽頁面的Web瀏覽器所在的計算機)的時間,則必須使用JavaScript愕贡。

14使用一個php腳本完成表單處理所有流程

瀏覽器第一次訪問login.php是GET請求.
login.php提交表單給自己是POST請求.
判別請求方式語句:$_SERVER['REQUEST_METHOD'] == 'POST'

15輸出緩沖

要啟用輸出緩沖草雕,請在頁面的最頂端使用ob_start()函數(shù)。
在腳本的結(jié)尾處固以,調(diào)用ob_end_flush()函數(shù)墩虹,將積累下來的緩沖發(fā)送到Web瀏覽器。
或者憨琳,可以使用ob_end_clean()函數(shù)刪除緩沖的數(shù)據(jù)而不進行傳輸诫钓。
這兩個函數(shù)都會為當(dāng)前腳本關(guān)閉輸出緩沖。

16處理HTTP頭

除了發(fā)送HTML篙螟、圖片等信息外菌湃,Web服務(wù)器通常需要用其他一些方式與客戶端通信。這些額外的通信需要使用HTTP頭實現(xiàn)遍略。

17 函數(shù)返回多個值

返回數(shù)組 小米閱讀 583 網(wǎng)頁版

18 文件

在創(chuàng)建可寫文件和目錄時惧所,將它們放在Web根目錄之外會更安全。換句話說绪杏,如果Web頁面放置在C:\inetpub\wwwroot或/Users/username/Sites中下愈,此時,如果你將項目放置在C:\inet-pub或/Users/username中蕾久,這些項目可以被本地運行的PHP訪問到势似,但不能通過Internet訪問。本章中的示例都遵從這種結(jié)構(gòu),你也應(yīng)該嚴(yán)格遵守履因。

寫入文件最簡單的方式是使用file_put_contents()函數(shù)

PHP專用的常量PHP_EOL障簿,表示當(dāng)前操作系統(tǒng)的換行符

如果需要將新內(nèi)容追加到文件中,加入FILE_APPEND常量作為第三個參數(shù):
file_put_contents($file, $data, FILE_APPEND);

如果正在運行的PHP版本是安全模式的栅迄,或設(shè)置了open_basedir指令站故,則在使用PHP訪問文件和目錄時會受到一些限制。請使用phpinfo()函數(shù)來查看服務(wù)器上的這些設(shè)置霞篡。

  • 讀取文件
    使用file_get_contents()會將文件中的所有內(nèi)容按照一個字符串來讀仁勒帷:$data = file_get_contents($file);
    如果文件每一行都有一些數(shù)據(jù),就像例子中的quotes.txt朗兵,最好使用file()函數(shù):$data = file($file);file()函數(shù)是PHP中非常有價值的一個內(nèi)置工具污淋。與file_get_contents()不同,它讀取文件中的所有內(nèi)容并將這些信息放置在一個數(shù)組中余掖。數(shù)組的每個元素都包含了文件中的一行寸爆,這些行是用換行符(\n或\r\n)分隔的。

+文件上傳
為了讓用戶能夠上傳文件盐欺,必須對標(biāo)準(zhǔn)的HTML表單作出3處更改赁豆。首先,初始form標(biāo)簽必須包含代碼enctype="multipart/form-data"冗美,讓瀏覽器知道表單數(shù)據(jù)將具備不同的類型:<form action="script.php" enctype="multipart/form-data" method="post">表單必須使用POST方法魔种。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市粉洼,隨后出現(xiàn)的幾起案子节预,更是在濱河造成了極大的恐慌,老刑警劉巖属韧,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件安拟,死亡現(xiàn)場離奇詭異,居然都是意外死亡宵喂,警方通過查閱死者的電腦和手機糠赦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锅棕,“玉大人拙泽,你說我怎么就攤上這事÷懔牵” “怎么了顾瞻?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長顺少。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么脆炎? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任梅猿,我火速辦了婚禮,結(jié)果婚禮上秒裕,老公的妹妹穿的比我還像新娘袱蚓。我一直安慰自己,他們只是感情好几蜻,可當(dāng)我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布喇潘。 她就那樣靜靜地躺著,像睡著了一般梭稚。 火紅的嫁衣襯著肌膚如雪颖低。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天弧烤,我揣著相機與錄音忱屑,去河邊找鬼。 笑死暇昂,一個胖子當(dāng)著我的面吹牛莺戒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播急波,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼从铲,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了澄暮?” 一聲冷哼從身側(cè)響起名段,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赏寇,沒想到半個月后吉嫩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡嗅定,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年自娩,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片渠退。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡忙迁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出碎乃,到底是詐尸還是另有隱情姊扔,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布梅誓,位于F島的核電站恰梢,受9級特大地震影響佛南,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嵌言,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一嗅回、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧摧茴,春花似錦绵载、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至购裙,卻和暖如春懂版,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背缓窜。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工定续, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人禾锤。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓私股,卻偏偏與公主長得像,于是被迫代替她去往敵國和親恩掷。 傳聞我的和親對象是個殘疾皇子倡鲸,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容