-
PHP數(shù)組之訪問索引數(shù)組內(nèi)容 用數(shù)組變量的名字后跟的中括號中的鍵,來訪問數(shù)組中的值。 例如: $fruit = array('蘋果','香蕉'); $fruit0 = $fruit['0']; print_r($fruit0);//結(jié)果為蘋果 上面代碼的作用:先把一個數(shù)組$fruit第一個值取出來然后賦給一個變量$fruit0,最后輸出變量值。查看全部
-
PHP數(shù)組之索引數(shù)組初始化 PHP有兩種數(shù)組:索引數(shù)組、關(guān)聯(lián)數(shù)組。 索引和關(guān)聯(lián)兩個詞都是針對數(shù)組的鍵而言的。 先介紹下索引數(shù)組,索引數(shù)組是指數(shù)組的鍵是整數(shù)的數(shù)組,并且鍵的整數(shù)順序是從0開始,依次類推。 可以使用下面代碼實現(xiàn): $fruit = array("蘋果","香蕉","菠蘿"); 注意數(shù)組的鍵是從0開始的??梢允褂胮rint_r($fruit);語句輸出數(shù)組鍵及對應(yīng)的值。查看全部
-
PHP數(shù)組定義 數(shù)組就是一個鍵值對組成的語言結(jié)構(gòu),鍵類似于酒店的房間號,值類似于酒店房間里存儲的東西。 $arr = array();表示創(chuàng)建一個空數(shù)組,并把創(chuàng)建的空數(shù)組賦值給變量$arr。查看全部
-
<?php
setcookie('test', time());
//創(chuàng)建名為test的cookie,time()設(shè)置失效時間
ob_start();
//開始進(jìn)入輸出緩沖區(qū)
print_r($_COOKIE);?
//$_COOKIE變量里面存放所有的cookie,這里的意思是輸出所有的cookie
$content = ob_get_contents();
//得到緩沖區(qū)里面的數(shù)據(jù),存放在$content變量里面
$content = str_replace(" ", ' ', $content);
//將數(shù)據(jù)里面的空格替換為 的符號
ob_clean();
清除緩沖區(qū)
header("content-type:text/html; charset=utf-8");
//聲明文檔類型和編碼格式
echo '當(dāng)前的Cookie為:<br>';
//輸出
echo nl2br($content);
//nl2br() 函數(shù)在字符串中的每個新行(\n)之前插入 HTML 換行符(<br> 或 <br />)
查看全部 -
mysql_fetch_array() 函數(shù)從結(jié)果集中取得一行作為關(guān)聯(lián)數(shù)組,或數(shù)字?jǐn)?shù)組,或二者兼有 返回根據(jù)從結(jié)果集取得的行生成的數(shù)組,如果沒有更多行則返回 false。查看全部
-
w的情況下下,只能write不能read,w+的情況下可以write 可以read.查看全部
-
fp為文件句柄,feof為判斷是否讀到文件尾,! 為非while(!feof(fp))就是當(dāng)條件為不是文件尾時均執(zhí)行后續(xù)代碼。查看全部
-
<?php
$subject = "my email is spark@imooc.com";
//在這里補(bǔ)充代碼,實現(xiàn)正則匹配,并輸出郵箱地址
$pattern = '/[\w\-]+@\w+\.\w+/';
preg_match($pattern, $subject, $matches);
echo $matches[0];
查看全部 -
PHP數(shù)據(jù)庫擴(kuò)展
PHP中一個數(shù)據(jù)庫可能有一個或者多個擴(kuò)展,其中既有官方的,也有第三方提供的。像Mysql常用的擴(kuò)展有原生的mysql庫,也可以使用增強(qiáng)版的mysqli擴(kuò)展,還可以使用PDO進(jìn)行連接與操作。
不同的擴(kuò)展提供基本相近的操作方法,不同的是可能具備一些新特性,以及操作性能可能會有所不同。
mysql擴(kuò)展進(jìn)行數(shù)據(jù)庫連接的方法:
$link?=?mysql_connect('mysql_host',?'mysql_user',?'mysql_password');
mysqli擴(kuò)展:
$link?=?mysqli_connect('mysql_host',?'mysql_user',?'mysql_password');
PDO擴(kuò)展
$dsn?=?'mysql:dbname=testdb;host=127.0.0.1';?$user?=?'dbuser';?$password?=?'dbpass';?$dbh?=?new?PDO($dsn,?$user,?$password)
查看全部 -
PHP異常處理之異常處理類
PHP具有很多異常處理類,其中Exception是所有異常處理的基類。
Exception具有幾個基本屬性與方法,其中包括了:
message 異常消息內(nèi)容
code 異常代碼
file 拋出異常的文件名
line 拋出異常在該文件的行數(shù)其中常用的方法有:
getTrace 獲取異常追蹤信息
getTraceAsString 獲取異常追蹤信息的字符串
getMessage 獲取出錯信息如果必要的話,可以通過繼承Exception類來建立自定義的異常處理類。
//自定義的異常類,繼承了PHP的異?;怑xception?class?MyException?extends?Exception?{?????function?getInfo()?{?????????return?'自定義錯誤信息';?????}?}?try?{?????//使用異常的函數(shù)應(yīng)該位于?"try"??代碼塊內(nèi)。如果沒有觸發(fā)異常,則代碼將照常繼續(xù)執(zhí)行。但是如果異常被觸發(fā),會拋出一個異常。?????throw?new?MyException('error');//這里規(guī)定如何觸發(fā)異常。注意:每一個?"throw"?必須對應(yīng)至少一個?"catch",當(dāng)然可以對應(yīng)多個"catch"?}?catch(Exception?$e)?{//"catch"?代碼塊會捕獲異常,并創(chuàng)建一個包含異常信息的對象?????echo?$e->getInfo();//獲取自定義的異常信息?????echo?$e->getMessage();//獲取繼承自基類的getMessage信息?}
查看全部 -
正則表達(dá)式的搜索和替換
正則表達(dá)式的搜索與替換在某些方面具有重要用途,比如調(diào)整目標(biāo)字符串的格式,改變目標(biāo)字符串中匹配字符串的順序等。
例如我們可以簡單的調(diào)整字符串的日期格式:
$string?=?'April?15,?2014';?$pattern?=?'/(\w+)?(\d+),?(\d+)/i';?$replacement?=?'$3,?${1}?$2';?echo?preg_replace($pattern,?$replacement,?$string);?//結(jié)果為:2014,?April?15
其中${1}與$1的寫法是等效的,表示第一個匹配的字串,$2代表第二個匹配的。
通過復(fù)雜的模式,我們可以更加精確的替換目標(biāo)字符串的內(nèi)容。
$patterns?=?array?('/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/',????????????????????'/^\s*{(\w+)}\s*=/');?$replace?=?array?('\3/\4/\1\2',?'$\1?=');//\3等效于$3,\4等效于$4,依次類推?echo?preg_replace($patterns,?$replace,?'{startDate}?=?1999-5-27');?//結(jié)果為:$startDate?=?5/27/1999?//詳細(xì)解釋下結(jié)果:(19|20)表示取19或者20中任意一個數(shù)字,(\d{2})表示兩個數(shù)字,(\d{1,2})表示1個或2個數(shù)字,(\d{1,2})表示1個或2個數(shù)字。^\s*{(\w+)}\s*=表示以任意空格開頭的,并且包含在{}中的字符,并且以任意空格結(jié)尾的,最后有個=號的。
用正則替換來去掉多余的空格與字符:
$str?=?'one?????two';?$str?=?preg_replace('/\s+/',?'?',?$str);?echo?$str;?//?結(jié)果改變?yōu)?one?two'
查看全部 -
查找所有匹配結(jié)果
preg_match只能匹配一次結(jié)果,但很多時候我們需要匹配所有的結(jié)果,preg_match_all可以循環(huán)獲取一個列表的匹配結(jié)果數(shù)組。
$p?=?"|<[^>]+>(.*?)</[^>]+>|i";?$str?=?"<b>example:?</b><div>this?is?a?test</div>";?preg_match_all($p,?$str,?$matches);?print_r($matches);
可以使用preg_match_all匹配一個表格中的數(shù)據(jù):
$p?=?"/<tr><td>(.*?)<\/td>\s*<td>(.*?)<\/td>\s*<\/tr>/i";?$str?=?"<table>?<tr><td>Eric</td><td>25</td></tr>?<tr><td>John</td><td>26</td></tr>?</table>";?preg_match_all($p,?$str,?$matches);?print_r($matches);
$matches結(jié)果排序為$matches[0]保存完整模式的所有匹配, $matches[1] 保存第一個子組的所有匹配,以此類推。
查看全部 -
使用正則表達(dá)式進(jìn)行匹配
使用正則表達(dá)式的目的是為了實現(xiàn)比字符串處理函數(shù)更加靈活的處理方式,因此跟字符串處理函數(shù)一樣,其主要用來判斷子字符串是否存在、字符串替換、分割字符串、獲取模式子串等。
PHP使用PCRE庫函數(shù)來進(jìn)行正則處理,通過設(shè)定好模式,然后調(diào)用相關(guān)的處理函數(shù)來取得匹配結(jié)果。
preg_match用來執(zhí)行一個匹配,可以簡單的用來判斷模式是否匹配成功,或者取得一個匹配結(jié)果,他的返回值是匹配成功的次數(shù)0或者1,在匹配到1次以后就會停止搜索。
$subject?=?"abcdef";?$pattern?=?'/def/';?preg_match($pattern,?$subject,?$matches);?print_r($matches);?//結(jié)果為:Array?(?[0]?=>?def?)
上面的代碼簡單的執(zhí)行了一個匹配,簡單的判斷def是否能匹配成功,但是正則表達(dá)式的強(qiáng)大的地方是進(jìn)行模式匹配,因此更多的時候,會使用模式:
$subject?=?"abcdef";?$pattern?=?'/a(.*?)d/';?preg_match($pattern,?$subject,?$matches);?print_r($matches);?//結(jié)果為:Array?(?[0]?=>?abcd?[1]?=>?bc?)
通過正則表達(dá)式可以匹配一個模式,得到更多的有用的數(shù)據(jù)。
查看全部 -
貪婪模式與懶惰模式
正則表達(dá)式中每個元字符匹配一個字符,當(dāng)使用+之后將會變的貪婪,它將匹配盡可能多的字符,但使用問號?字符時,它將盡可能少的匹配字符,既是懶惰模式。
貪婪模式:在可匹配與可不匹配的時候,優(yōu)先匹配
//下面的\d表示匹配數(shù)字?$p?=?'/\d+\-\d+/';?$str?=?"我的電話是010-12345678";?preg_match($p,?$str,?$match);?echo?$match[0];?//結(jié)果為:010-12345678
懶惰模式:在可匹配與可不匹配的時候,優(yōu)先不匹配
$p?=?'/\d?\-\d?/';?$str?=?"我的電話是010-12345678";?preg_match($p,?$str,?$match);?echo?$match[0];??//結(jié)果為:0-1
當(dāng)我們確切的知道所匹配的字符長度的時候,可以使用{}指定匹配字符數(shù)
$p?=?'/\d{3}\-\d{8}/';?$str?=?"我的電話是010-12345678";?preg_match($p,?$str,?$match);?echo?$match[0];?//結(jié)果為:010-12345678
查看全部 -
正則表達(dá)式中具有特殊含義的字符稱之為元字符,常用的元字符有:
\ 一般用于轉(zhuǎn)義字符
^ 斷言目標(biāo)的開始位置(或在多行模式下是行首)
$ 斷言目標(biāo)的結(jié)束位置(或在多行模式下是行尾)
. 匹配除換行符外的任何字符(默認(rèn))
[ 開始字符類定義
] 結(jié)束字符類定義
| 開始一個可選分支
( 子組的開始標(biāo)記
) 子組的結(jié)束標(biāo)記
? 作為量詞,表示 0 次或 1 次匹配。位于量詞后面用于改變量詞的貪婪特性。 (查閱量詞)
* 量詞,0 次或多次匹配
+ 量詞,1 次或多次匹配
{ 自定義量詞開始標(biāo)記
} 自定義量詞結(jié)束標(biāo)記//下面的\s匹配任意的空白符,包括空格,制表符,換行符。[^\s]代表非空白符。[^\s]+表示一次或多次匹配非空白符。 $p?=?'/^我[^\s]+(蘋果|香蕉)$/'; $str?=?"我喜歡吃蘋果"; if?(preg_match($p,?$str))?{ ????echo?'匹配成功'; }
元字符具有兩種使用場景,一種是可以在任何地方都能使用,另一種是只能在方括號內(nèi)使用,在方括號內(nèi)使用的有:
\ 轉(zhuǎn)義字符
^ 僅在作為第一個字符(方括號內(nèi))時,表明字符類取反
- 標(biāo)記字符范圍其中^在反括號外面,表示斷言目標(biāo)的開始位置,但在方括號內(nèi)部則代表字符類取反,方括號內(nèi)的減號-可以標(biāo)記字符范圍,例如0-9表示0到9之間的所有數(shù)字。
//下面的\w匹配字母或數(shù)字或下劃線。 $p?=?'/[\w\.\-]+@[a-z0-9\-]+\.(com|cn)/'; $str?=?"我的郵箱是Spark.eric@imooc.com"; preg_match($p,?$str,?$match); echo?$match[0];
查看全部 -
preg_match()是匹配函數(shù),他有兩個參數(shù),第一個參數(shù)是匹配模式? 即?'/ xxx/i' 意思是在$str中去匹配?http 并忽略大小寫!
查看全部
舉報