<?php
0002 其他
0003 isset() 變量是否存在
0004 boolean empty() 檢查變量是否存在,並判斷值是否為非空或非0
0005 void unset() 銷毀變量
0006 header('Content-Type: text/html; charset=utf-8');
0007 method_exists($obj, $method) 判斷對象的方法是否可用
0008 file_exists($file) 判斷文件是否存在
0009 function_exists();
0010 class_exists($class_name);
0011 gettype();獲取數據類型
0012 set_magic_quotes_runtime() 0 for off, 1 for on 當遇到反斜桿、單引號,將會自動加上一個反斜桿,保護系統和數據庫的安全
0013 ini_set();
0014
0015 安全
0016 function strReplace($str)
0017 {
0018 $strResult = $str;
0019 if(!get_magic_quotes_gpc())//判斷設置是否開啟
0020 {
0021 $strResult = addslashes($strResult);//轉換sql語句特殊字符
0022 }
0023 return $strResult;
0024 }
0025
0026
0027 function quotes($content)
0028 {
0029 //如果magic_quotes_gpc=Off,那麼就開始處理
0030 if (!get_magic_quotes_gpc())
0031 {
0032 //判斷$content是否為數組
0033 if (is_array($content))
0034 {
0035 //如果$content是數組,那麼就處理它的每一個單無
0036 foreach ($content as $key=>$value)
0037 {
0038 $content[$key] = addslashes($value);
0039 }
0040 }
0041 else
0042 {
0043 //如果$content不是數組,那麼就僅處理一次
0044 addslashes($content);
0045 }
0046 }
0047 //返回$content
0048 return $content;
0049 }
0050
0051 編碼轉換
0052 string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] )
0053 iconv();
0054
0055 時間
0056 date_default_timezone_set("PRC");
0057 date("Y-m-d H:i:s");
0058 time();
0059 date("Y-m-d H:i:s",time()+3600)
0060 ini_set('date.timezone', 'PRC');
0061 msec sec microtime() 以秒返回時間戳 explode(' ', microtime())
0062
0063 魔術方法
0064 __construct() 當實例化一個對象的時候,這個對象的這個方法首先被調用。
0065 __destruct() 當刪除一個對象或對象操作終止的時候,調用該方法。
0066 __get() 當試圖讀取一個並不存在的屬性的時候被調用。
0067 __set() 當試圖向一個並不存在的屬性寫入值的時候被調用。
0068 __call() 當試圖調用一個對象並不存在的方法時,調用該方法。
0069 __toString() 當打印一個對象的時候被調用
0070 __clone() 當對象被克隆時,被調用
0071 __isset()
0072 __unset()
0073 __autoload($classname)
0074 __sleep()
0075 __wakeup()
0076
0077 系統常量
0078 __FILE__ 當前文件名
0079 __LINE__ 當前行數
0080 __FUNCTION__ 當前函數名
0081 __CLASS__ 當前類名
0082 __METHOD__ 當前對象的方法名
0083 PHP_OS 當前系統
0084 PHP_VERSION php版本
0085 DIRECTORY_SEPARATOR 根據系統決定目錄的分隔符 /\
0086 PATH_SEPARATOR 根據系統決定環境變量的目錄列表分隔符 ; :
0087 E_ERROR 1
0088 E_WARNING 2
0089 E_PARSE 4
0090 E_NOTICE 8
0091 M_PI 3.141592
0092 $_SERVER
0093 $_ENV 執行環境提交至腳本的變量
0094 $_GET
0095 $_POST
0096 $_REQUEST
0097 $_FILES
0098 $_COOKIE
0099 $_SESSION
0100 $_GLOBALS
0101
0102 輸出
0103 echo //Output one or more strings
0104 print //Output a string
0105 print_r() //打印關於變量的易於理解的信息。
0106 var_dump() //打印變量的相關信息
0107 var_export() //輸出或返回一個變量的字符串表示
0108 printf("%.1f",$num) //Output a formatted string
0109 sprintf() //Return a formatted string
0110
0111 錯誤處理
0112 @1/0
0113 error_reporting(E_ALL) 顯示所有錯誤
0114 error_reporting(0)
0115 trigger_error("Cannot divide by zero", E_USER_ERROR);
0116 try
0117 {
0118 throw new Exception("執行失敗");
0119 }
0120 catch (Exception $ex)
0121 {
0122 echo $ex;
0123 }
0124
0125 字符串處理
0126 string trim("eee ") trim ('ffffe','e') //ltrim rtrim
0127 array explode(".", "fff.ff.f") 按指定字符切割
0128 string implode(".", $array) 別名:join 把數組值數據按指定字符連接起來
0129 array str_split("eeeeeeee",4) 按長度切割字符串
0130 array split("-","fff-ff-f") 按指定字符切割
0131 int strlen('ffffffff') 取字符長度
0132 string substr ( string $string , int $start [, int $length ] )
0133 substr($a,-2, 2) 截取字符
0134 int substr_count($text, 'is') 字符串出現的次數
0135 string strstr($text, 'h') 第一次出現h後的字符串 //別名:strchr
0136 int strpos($text, 'h') 第一次出現h的位置
0137 strrpos();最後一次出現h的位置
0138 str_replace('a', 'ttt', $t) 把$t裡的'a'替換為'ttt'
0139 strtr($t,'is','ppp') 把$t中'is'替換成'ppp'
0140 strtr("hi all, I said hello", array("hello" => "hi")) 把'hello'轉換成'hi'
0141 string md5_file('1.txt',false) 文件數據md5加密
0142 int strcmp(string str1, string str2) 字符串比較
0143 int strcasecmp(string str1, string str2) 忽略大小寫
0144 string str_pad($i, 10, "-=", STR_PAD_LEFT) 在原字符左邊補'-=',直到新字符串長度為10
0145 STR_PAD_RIGHT
0146 STR_PAD_BOTH
0147 string str_repeat('1', 5) 重復5個1
0148 void parse_str('id=11'); echo $id; 將字串符解析為變量
0149 array preg_grep("/^(\d+)?\.\d+$/", array(11.2,11,11.2)) 匹配數據
0150 array preg_split ("/[\s,]+/", "hypertext language,programming"); 按指定的字符切割
0151 array pathinfo(string path [, int options]) 返回文件路徑的信息
0152 string basename ( string path [, string suffix] ) 返回路徑中的文件名部分
0153 string dirname ( string path ) $_SERVER[PHP_SELF] 返回路徑中的目錄部分
0154 string nl2br("foo isn't\n bar") "foo isn't<br> bar" 把換行轉成<br>
0155 string chr ( int ascii ) *
0156 mixed str_word_count ( string string [, int format [, string charlist]] )
0157 string str_shuffle ('abc') 打亂字符串順序
0158 string strrev($str) * 翻轉一個字符串
0159 string strtolower($str) * 將字符串 $str 的字符全部轉換為小寫的
0160 string strtoupper($str) * 將字符串 $str 的字符全部轉換為大寫的
0161 string ucfirst ($str) * 將字符串 $str 的第一個單詞的首字母變為大寫。
0162 string ucwords($str) * 將字符串 $str 的每個單詞的首字母變為大寫。
0163
0164 string addslashes("I'm") I\'m 使用反斜線引用字符串 這些字符是單引號(')、雙引號(")、反斜線(\)與 NUL(NULL 字符)
0165 string stripcslashes("I\'m") I'm 將用addslashes()函數處理後的字符串返回原樣
0166 strip_tags("<p>tt</p>", '<p>') 去除html、xml、php標記,第二個參數用來保留標記
0167 string urlencode(string str)
0168 string urldecode(string str)
0169 string htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES) 轉換特殊字符為HTML字符編碼
0170 <a href='test'>Test</a>
0171 ENT_COMPAT –對雙引號進行編碼,不對單引號進行編碼
0172 ENT_QUOTES –對單引號和雙引號進行編碼
0173 ENT_NOQUOTES –不對單引號或雙引號進行編碼
0174 string htmlentities('<p>ff</p>', ENT_QUOTES) 轉換特殊字符為HTML字符編碼,中文會轉成亂碼
0175
0176 數組處理
0177 int count( mixed var [, int mode] ) 別名:sizeof() 取數組長度
0178 string implode(".", $array) 別名:join 把數組值數據按指定字符連接起來
0179 array explode(".", "fff.ff.f") 按指定字符切割
0180 array range(0, 6, 2) 返回數組 array(0,2,4,6) 第一個參數為起使數,第二個參數為結束數,第三個參數為數據增加步長
0181 int array_push($a, "3", 1) 把'3'、'1'壓入$a,將一個或多個單元壓入數組的末尾(入棧),第二個參數開始就是壓入的數據
0182 void unset ( mixed var [, mixed var [, ...]] )
0183 array array_pad ($a, 5, 's')用's'將數組填補到指定長度
0184 bool shuffle ( array $array ) 將數組打亂
0185 mixed array_rand ( array input [, int num_req] )從數組中隨機取出一個或多個單元的索引或鍵名
0186 array array_count_values ( array input )統計數組中所有的值出現的次數
0187 array array_combine ( array keys, array values ) 創建一個數組,用一個數組的值作為其鍵名,另一個數組的值作為其值
0188 bool array_key_exists ( mixed key, array search )檢查給定的鍵名或索引是否存在於數組中
0189 mixed array_search ( mixed needle, array haystack [, bool strict] )在數組中搜索給定的值,如果成功則返回相應的鍵名
0190 bool is_array ( mixed var )
0191 bool in_array ( mixed needle, array haystack [, bool strict] )檢查數組中是否存在某個值
0192 number array_sum ( array array )計算數組中所有值的和
0193 array array_unique ( array array )移除數組中重復的值
0194 mixed reset ( array &array )將數組的內部指針指向第一個單元
0195 mixed current ( array &array )
0196 mixed next ( array &array )
0197 mixed prev ( array &array )
0198 mixed end ( array &array )
0199 mixed key ( array &array )
0200 array array_keys ( array input [, mixed search_value [, bool strict]] ) 返回數組中所有的鍵名
0201 array array_values ( array input ) 返回數組中所有的值
0202 bool print_r ( mixed expression [, bool return] )
0203 void var_dump ( mixed expression [, mixed expression [, ...]] )
0204 int array_unshift ( array &array, mixed var [, mixed ...] )在數組開頭插入一個或多個單元
0205 mixed array_shift ( array &array )將數組開頭的單元移出數組
0206 mixed array_pop ( array &array )將數組最後一個單元彈出(出棧)
0207 array array_splice ( array $input, int offset [, int length [, array replacement]] ) 把數組中的一部分去掉並用其它值取代
0208 array array_merge ( array array1 [, array array2 [, array ...]] )合並一個或多個數組
0209 array array_flip ( array trans )交換數組中的鍵和值
0210 int extract( array var_array [, int extract_type [, string prefix]] ) 從數組中將變量導入到當前的符號表
0211 array compact ( mixed varname [, mixed ...] ) 建立一個數組,包括變量名和它們的值
0212 bool sort ( array &array [, int sort_flags] )從最低到最高重新安排
0213 bool natsort($a) 用“自然排序”算法對數組排序
0214 bool rsort ( array &array [, int sort_flags] )對數組進行逆向排序(最高到最低)
0215 bool asort ( array &array [, int sort_flags] )對數組進行排序並保持索引關系
0216 bool arsort ( array &array [, int sort_flags] ) 對數組進行逆向排序並保持索引關系
0217 bool ksort ( array &array [, int sort_flags] )對數組按照鍵名排序
0218 bool krsort ( array &array [, int sort_flags] )對數組按照鍵名逆向排序
0219 array array_filter ( array input [, callback callback] ) 用回調函數過濾數組中的單元
0220 bool array_walk ( array &array, callback funcname [, mixed userdata] ) 對數組中的每個成員應用用戶函數
0221 array array_map ( callback callback, array arr1 [, array ...] )將回調函數作用到給定數組的單元上
0222 array array_fill ( int start_index, int num, mixed value ) 用給定的值填充數組
0223 array_fill(5, 3, 'a')-->array(5=>'a',6=>'a',7=>'a')
0224 array array_chunk ( array input, int size [, bool preserve_keys] )將一個數組分割成多個
0225
0226 smarty
0227 模板引擎將不分析
0228 <!--{literal}-->
0229 <script>
0230 function t() {
0231 }
0232 </script>
0233 <!--{/literal}-->
0234 讀取配置文件
0235 <!--{config_load file="config.s"}-->
0236 <!--{#site_url#}-->
0237 <!--{$smarty.config.site_url}-->
0238 引入文件
0239 <!--{include file="index2.html"}-->
0240 <!--{include_php file="/path/to/load_nav.php"}--> $trusted_dir 指定目錄下的文件
0241 捕獲模板輸出的數據
0242 <!--{capture name='eee'}-->
0243 fffffffff
0244 <!--{/capture}-->
0245 <!--{$smarty.capture.eee}-->
0246 循環
0247 <{section name=loop loop=$News_IN}>
0248 <{$News_IN[loop].NewsID}>
0249 <{/section}>
0250
0251 <!--{section name=t loop=$data}-->
0252 <tr>
0253 <td><!--{$data[t].username}--></td>
0254 </tr>
0255 <!--{/section}-->
0256
0257 <{foreach from=$newsArray item=newsID key=k}>
0258 新聞編號:<{$newsID.newsID}><br>
0259 新聞內容:<{$newsID.newsTitle}><br><hr>
0260 <{/foreach}>
0261 判斷
0262 <!--{if true}-->
0263 1111
0264 <!--{else}-->
0265 22222222
0266 <!--{/if}-->
0267 時間
0268 {$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}
0269 %Y年%m月%d日 亂碼
0270 <!--{$smarty.now|date_format:"%Y年%m月%d日 %H時%M分%S秒"}-->
0271 修改插件:plugins/modifier.date_format.php
0272 $format = mb_convert_encoding($format,'gbk','utf-8');
0273 return mb_convert_encoding(strftime($format, $timestamp),'utf-8','gbk');
0274
0275 局部不緩存
0276 html:
0277 <!--{$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}-->
0278 <!--{cacheless a="aaa" b="bbbb"}-->
0279 <!--{$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}-->
0280 <!--{/cacheless}-->
0281 php:
0282 $smarty->register_block('cacheless', 'smarty_block_dynamic', false);//true:緩存,false:不緩存
0283 function smarty_block_dynamic($param, $content, &$smarty)
0284 {
0285 return $content;
0286 }
0287
0288 php:
0289 function insert_kk()//方法名前必須有"insert"
0290 {
0291 return date('Y-m-d H:i:s');
0292 }
0293 html:
0294 <!--{insert name="kk"}-->
0295 自定義方法
0296 注冊方法
0297 php
0298 $smarty->register_function('test1', 'test');
0299 function test($p)
0300 {
0301 return 'ffffffffff';
0302 }
0303 html:
0304 <!--{test1 name="ff"}-->
0305 ------------------------------------------------
0306 方法自定義
0307 插件文件方式定義方法
0308 function.test.php 文件存在plugins目錄下,方法名:smarty_function_test($params, &$smarty)
0309 function smarty_function_test($params, &$smarty)
0310 {
0311 return 'fff';
0312 }
0313 html調用:
0314 <!--{test name='aa' p='ff'}-->
0315 ----------------------------------------------------
0316 插入方法
0317 插件文件:insert.kk.php文件存於plugins目錄下
0318 function smarty_insert_kk()
0319 {
0320 return date('Y-m-d H:i:s');
0321 }
0322 php:
0323 function insert_kk()//方法名前必須有"insert"
0324 {
0325 return date('Y-m-d H:i:s');
0326 }
0327 html:
0328 <!--{insert name="kk"}-->
0329 -------------------------------------------------
0330 管道符自定義方法
0331 插件文件方式定義方法
0332 modifier.test.php 文件存在於plugins目錄下,方法名: function smarty_modifier_test($str, $str2)
0333 function smarty_modifier_test($str, $str2)
0334 {
0335 return $str.$str2;
0336 }
0337 html調用:
0338 <!--{'ff'|test:'tt'}-->
0339
0340 php:
0341 function eee($a)
0342 {
0343 return 'ffffffffffffff';
0344 }
0345 html:
0346 <!--{''|@eee}-->
0347 if語句
0348 eq相等,
0349 ne、neq不相等,
0350 gt大於
0351 gte、ge大於等於,
0352 lte、le 小於等於,
0353 not非, mod求模。
0354 is [not] div by是否能被某數整除,
0355 is [not] even是否為偶數,
0356 $a is [not] even by $b 即($a / $b) % 2 == 0
0357 is [not] odd是否為奇
0358 $a is not odd by $b即($a / $b) % 2 != 0
0359
0360 XML
0361 sax
0362 xml:
0363 <--?xml version="1.0" encoding="utf-8"?-->
0364 <books>
0365 <book>
0366 <author>Jack Herrington</author>
0367 <title>PHP Hacks</title>
0368 <publisher>O'Reilly</publisher>
0369 </book>
0370 <book>
0371 <author>Jack Herrington</author>
0372 <title>Podcasting Hacks</title>
0373 <publisher>O'Reilly</publisher>
0374 </book>
0375 <book>
0376 <author>作者</author>
0377 <title>標題</title>
0378 <publisher>出版者</publisher>
0379 </book>
0380 </books>
0381 php:
0382 $g_books = array();
0383 $g_elem = null;
0384
0385 function startElement( $parser, $name, $attrs )
0386 {
0387 global $g_books, $g_elem;
0388 if ( $name == 'BOOK' ) $g_books []= array();
0389 $g_elem = $name;
0390 }
0391
0392 function endElement( $parser, $name )
0393 {
0394 global $g_elem;
0395 $g_elem = null;
0396 }
0397
0398 function textData( $parser, $text )
0399 {
0400 global $g_books, $g_elem;
0401 if ( $g_elem == 'AUTHOR' ||
0402 $g_elem == 'PUBLISHER' ||
0403 $g_elem == 'TITLE' )
0404 {
0405 $g_books[ count( $g_books ) - 1 ][ $g_elem ] = $text;
0406 }
0407 }
0408
0409 $parser = xml_parser_create();
0410
0411 xml_set_element_handler( $parser, "startElement", "endElement" );
0412 xml_set_character_data_handler( $parser, "textData" );
0413
0414 $f = fopen( '1.xml', 'r' );
0415
0416 while($data = fread( $f, 4096 ))
0417 {
0418 xml_parse( $parser, $data );
0419 }
0420
0421 xml_parser_free( $parser );
0422
0423 foreach( $g_books as $book )
0424 {
0425 echo $book['TITLE']." - ".$book['AUTHOR']." - ";
0426 echo $book['PUBLISHER']."<br>";
0427 }
0428 DomDocument()
0429 xml:
0430 <--?xml version="1.0" encoding="utf-8"?-->
0431 <books>
0432 <book>
0433 <author>Jack Herrington</author>
0434 <title>PHP Hacks</title>
0435 <publisher>O'Reilly</publisher>
0436 </book>
0437 <book>
0438 <author>Jack Herrington</author>
0439 <title>Podcasting Hacks</title>
0440 <publisher>O'Reilly</publisher>
0441 </book>
0442 <book>
0443 <author>作者</author>
0444 <title>標題</title>
0445 <publisher>出版者</publisher>
0446 </book>
0447 </books>
0448 php讀取:
0449 $doc = new DOMDocument();
0450 $doc->load( "1.xml");
0451
0452 $books = $doc->getElementsByTagName( "book" );
0453 foreach( $books as $book )
0454 {
0455 $authors = $book->getElementsByTagName( "author" );
0456 $author = $authors->item(0)->nodeValue;
0457
0458 $publishers = $book->getElementsByTagName( "publisher" );
0459 $publisher = $publishers->item(0)->nodeValue;
0460
0461 $titles = $book->getElementsByTagName( "title" );
0462 $title = $titles->item(0)->nodeValue;
0463
0464 echo "$title - $author - $publisher<br>";
0465 }
0466 php生成:
0467 $books = array();
0468 $books [] = array(
0469 'title' => 'PHP Hacks',
0470 'author' => 'Jack Herrington',
0471 'publisher' => "O'Reilly"
0472 );
0473 $books [] = array(
0474 'title' => 'Podcasting Hacks',
0475 'author' => 'Jack Herrington',
0476 'publisher' => "O'Reilly"
0477 );
0478
0479 $doc = new DOMDocument();
0480 $doc->formatOutput = true;
0481
0482 $r = $doc->createElement( "books" );
0483 $doc->appendChild( $r );
0484
0485 foreach( $books as $book )
0486 {
0487 $b = $doc->createElement( "book" );
0488 $author = $doc->createElement( "author" );
0489 $author->appendChild($doc->createTextNode( $book['author'] ));
0490 $b->appendChild( $author );
0491
0492 $title = $doc->createElement( "title" );
0493 $title->appendChild($doc->createTextNode( $book['title'] ));
0494 $b->appendChild( $title );
0495
0496 $publisher = $doc->createElement( "publisher" );
0497 $publisher->appendChild($doc->createTextNode( $book['publisher'] ));
0498 $b->appendChild( $publisher );
0499 $r->appendChild( $b );
0500 }
0501
0502 echo $doc->saveXML();
0503 echo $doc->save('222.xml');
0504 SimpleXML
0505 xml:
0506 <books>
0507 <book>
0508 <author>Jack Herrington</author>
0509 <title>PHP Hacks</title>
0510 <publisher>O'Reilly</publisher>
0511 </book>
0512 </books>
0513 php:
0514 $xml = new SimpleXMLElement('1.xml', NULL, TRUE);
0515 echo $xml->book[0]->author."___".$xml->book[0]->title."___".$xml->book[0]->publisher;
0516
0517 正則
0518 ereg系列的正則表達式不需要定屆符,preg系列的才需要,並且定界符可以自己選擇,只有前後一對就行,比如我們一般使用/符號,但是如果裡面有/需要匹配那麼就需要使用\/來表示,當/需要出現多次的時候,這樣就不方便,我們就可以使用其他的定界符,比如|
0519
0520
0521 正則特殊字符
0522 . \ + * ? [ ^ ] $ ( ) { } = ! < > | :
0523 由原子(普通字符,如英文字符)、
0524 元字符(有特殊功用的字符)
0525 模式修正字符
0526 一個正則表達式中,至少包含一個原子
0527
0528 全部符號解釋
0529 \ 將下一個字符標記為一個特殊字符、或一個原義字符、或一個 向後引用、或一個八進制轉義符。例如,'n' 匹配字符 "n"。'\n' 匹配一個換行符。序列 '\\' 匹配 "\" 而 "\(" 則匹配 "("。
0530 ^ 匹配輸入字符串的開始位置。如果設置了 RegExp 對象的 Multiline 屬性,^ 也匹配 '\n' 或 '\r' 之後的位置。
0531 $ 匹配輸入字符串的結束位置。如果設置了RegExp 對象的 Multiline 屬性,$ 也匹配 '\n' 或 '\r' 之前的位置。
0532 * 匹配前面的子表達式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價於{0,}。
0533 + 匹配前面的子表達式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價於 {1,}。
0534 ? 匹配前面的子表達式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等價於 {0,1}。
0535 {n} n 是一個非負整數。匹配確定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個 o。
0536 {n,} n 是一個非負整數。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等價於 'o+'。'o{0,}' 則等價於 'o*'。
0537 {n,m} m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 將匹配 "fooooood" 中的前三個 o。'o{0,1}' 等價於 'o?'。請注意在逗號和兩個數之間不能有空格。
0538 ? 當該字符緊跟在任何一個其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 後面時,匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字符串,而默認的貪婪模式則盡可能多的匹配所搜索的字符串。例如,對於字符串 "oooo",'o+?' 將匹配單個 "o",而 'o+' 將匹配所有 'o'。
0539 . 匹配除 "\n" 之外的任何單個字符。要匹配包括 '\n' 在內的任何字符,請使用象 '[.\n]' 的模式。
0540 (pattern) 匹配 pattern 並獲取這一匹配。所獲取的匹配可以從產生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中則使用 $0…$9 屬性。要匹配圓括號字符,請使用 '\(' 或 '\)'。
0541 (?:pattern) 匹配 pattern 但不獲取匹配結果,也就是說這是一個非獲取匹配,不進行存儲供以後使用。這在使用 "或" 字符 (|) 來組合一個模式的各個部分是很有用。例如, 'industr(?:y|ies) 就是一個比 'industry|industries' 更簡略的表達式。
0542 (?=pattern) 正向預查,在任何匹配 pattern 的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如,'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。預查不消耗字符,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜索,而不是從包含預查的字符之後開始。
0543 (?!pattern) 負向預查,在任何不匹配 pattern 的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。預查不消耗字符,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜索,而不是從包含預查的字符之後開始
0544 x|y 匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 則匹配 "zood" 或 "food"。
0545 [xyz] 字符集合。匹配所包含的任意一個字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
0546 [^xyz] 負值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。
0547 [a-z] 字符范圍。匹配指定范圍內的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范圍內的任意小寫字母字符。
0548 [^a-z] 負值字符范圍。匹配任何不在指定范圍內的任意字符。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范圍內的任意字符。
0549 \b 匹配一個單詞邊界,也就是指單詞和空格間的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。
0550 \B 匹配非單詞邊界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
0551 \cx 匹配由 x 指明的控制字符。例如, \cM 匹配一個 Control-M 或回車符。x 的值必須為 A-Z 或 a-z 之一。否則,將 c 視為一個原義的 'c' 字符。
0552 \d 匹配一個數字字符。等價於 [0-9]。
0553 \D 匹配一個非數字字符。等價於 [^0-9]。
0554 \f 匹配一個換頁符。等價於 \x0c 和 \cL。
0555 \n 匹配一個換行符。等價於 \x0a 和 \cJ。
0556 \r 匹配一個回車符。等價於 \x0d 和 \cM。
0557 \s 匹配任何空白字符,包括空格、制表符、換頁符等等。等價於 [ \f\n\r\t\v]。
0558 \S 匹配任何非空白字符。等價於 [^ \f\n\r\t\v]。
0559 \t 匹配一個制表符。等價於 \x09 和 \cI。
0560 \v 匹配一個垂直制表符。等價於 \x0b 和 \cK。
0561 \w 匹配包括下劃線的任何單詞字符。等價於'[A-Za-z0-9_]'。
0562 \W 匹配任何非單詞字符。等價於 '[^A-Za-z0-9_]'。
0563 \xn 匹配 n,其中 n 為十六進制轉義值。十六進制轉義值必須為確定的兩個數字長。例如,'\x41' 匹配 "A"。'\x041' 則等價於 '\x04' & "1"。正則表達式中可以使用 ASCII 編碼。.
0564 \num 匹配 num,其中 num 是一個正整數。對所獲取的匹配的引用。例如,'(.)\1' 匹配兩個連續的相同字符。
0565 \n 標識一個八進制轉義值或一個向後引用。如果 \n 之前至少 n 個獲取的子表達式,則 n 為向後引用。否則,如果 n 為八進制數字 (0-7),則 n 為一個八進制轉義值。
0566 \nm 標識一個八進制轉義值或一個向後引用。如果 \nm 之前至少有 nm 個獲得子表達式,則 nm 為向後引用。如果 \nm 之前至少有 n 個獲取,則 n 為一個後跟文字 m 的向後引用。如果前面的條件都不滿足,若 n 和 m 均為八進制數字 (0-7),則 \nm 將匹配八進制轉義值 nm。
0567 \nml 如果 n 為八進制數字 (0-3),且 m 和 l 均為八進制數字 (0-7),則匹配八進制轉義值 nml。
0568 \un 匹配 n,其中 n 是一個用四個十六進制數字表示的 Unicode 字符。例如, \u00A9 匹配版權符號 (?)。
0569 例子
0570 /\b([a-z]+)\b/i 單詞數量
0571 /(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/ 將一個URL解析為協議、域、端口及相對路徑
0572 /^(?:Chapter|Section) [1-9][0-9]{0,1}$/ 定位章節的位置
0573 /[-a-z]/ A至z共26個字母再加一個-號。
0574 /ter\b/ 可匹配chapter,而不能terminal
0575 /\Bapt/ 可匹配chapter,而不能aptitude
0576 /Windows(?=95 |98 |NT )/ 可匹配Windows95或Windows98或WindowsNT,當找到一個匹配後,從Windows後面開始進行下一次的檢索匹配。
0577 ^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$ Email 合法格式檢查
0578 ^[0-9]+$ 純數據檢查
0579 ^[0-9a-z]{1}[0-9a-z\-]{0,19}$ 用戶名檢查,字母和數字開始,只能含字母、數字、橫槓
0580
0581 模式修正符
0582 i 忽略大小寫
0583 s 如果設定了此修正符,模式中的圓點元字符(.)匹配所有的字符,包括換行符
0584 e 只用在preg_replace(),在替換字符串中對逆向引用作正常的替換,將其作為 PHP 代碼求值,並用其結果來替換所搜索的字符串。
0585 如:
0586 $p = '/\[colorFont\](.+?)\[\/colorFont\]/ie';
0587 $t = '"<img src='color.php?t=".urlencode("\1")."\'/>"';
0588 ecoh preg_replace($p,$t,$string);
0589 這裡必須加上e修正,才能將匹配到的內容用urlencode處理
0590 U 貪婪模式,最大限度匹配
0591 如:/a[\w]+?e/U匹配abceadeddd中的abceade而不是abce,如果不加U修正,則匹配abce
0592 A 強制從字符串開頭匹配,即自動在模式開頭加上^
0593 m 當設定了此修正符,“行起始” ^ 和“行結束” $ 除了匹配整個字符串開頭和結束外,還分別匹配其中的換行符的之後和之前。如果目標字符串中沒有“\n”字符或者模式中沒有 ^ 或 $,則設定此修正符沒有任何效果。
0594 D 模式中的美元元字符僅匹配目標字符串的結尾。沒有此選項時,如果最後一個字符是換行符的話,美元符號也會匹配此字符之前。如果設定了 m 修正符則忽略此選項
0595 例子
0596 匹配中文
0597 preg_match_all('/[^\x00-\x80]+/', '中華s人s民', $a)
0598 如果你的文件是gb2312的,用/[\xa0-\xff]{2}/
0599 如果是utf8的,用/[\xe0-\xef][\x80-\xbf]{2}/
0600 匹配郵箱地址
0601 preg_match('/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/', '[email protected]')
0602 替換空白字符
0603 $s = preg_replace('/[\s\v]+/','',' sss sdd ss ');
0604 替換
0605 $string = "April 15, 2003";
0606 $pattern = "/(\w+) (\d+), (\d+)/i";
0607 $replacement = "\${1}1,\${3}1-$2";
0608 echo preg_replace($pattern, $replacement, $string);
0609 匹配帳號是否合法(字母開頭,允許5-6字節,允許字母數字下劃線)
0610 preg_match('/^[a-zA-Z][a-zA-Z0-9_]{4,5}$/', 'a011a')
0611 匹配數字
0612 /^-\d*$/ 匹配負整數
0613 /^-?\d*$/ 匹配整數
0614 匹配浮點數
0615 preg_match("/^-?(\d*.\d*|0.\d*|0?.0+|0)$/", "11")
0616 匹配電話號碼
0617 preg_match("/^(0[0-9]{2,3}\-)?([2-9][0-9]{6,7}){1,1}(\-[0-9]{1,4}){0,1}$/","0511-22345678-11")
0618 匹配手機號碼
0619 preg_match("/^1(3|5)\d{9}$/","13717897211")
0620
0621 文件處理
0622 文件屬性
0623 file_exists('1.php') 文件或目錄是否存在
0624 filesize() 取得文件大小
0625 is_readable() 判斷給定文件名是否可讀
0626 is_writable() 判斷給定文件名是否可寫
0627 is_executable() 判斷給定文件名是否可執行
0628 filectime() 獲取文件的創造時間
0629 filemtime() 獲取文件的修改時間
0630 fileatime() 獲取文件的訪問時間
0631 stat() 獲取文件大部分屬性值
0632 解析目錄
0633 basename() 返回路徑中的文件名部分
0634 dirname() 返回目錄
0635 pathinfo() 返回目錄名、基本名和擴展名的關聯數組
0636 遍歷目錄
0637 opendir() 打開指定目錄
0638 readdir() 關閉指定目錄
0639 closedir() 關閉指定目錄
0640 rewinddir() 倒回目錄句柄
0641 $dir_handle=opendir('.');
0642 while($file=readdir($dir_handle))
0643 {
0644 echo filesize($file).'___'.$file.'<br>';
0645 }
0646 closedir($dir_handle);
0647 建立和刪除目錄
0648 mkdir() 創建目錄
0649 rmdir() 刪除空目錄
0650 文件操作
0651 fopen()
0652 fclose()
0653 fwrite() 寫入文件
0654 fputs() fwrite的別名
0655 file_put_contents($文件名,$內容) 把內容存成文件
0656 file_get_contents() 從文件讀出內容
0657 文件讀取
0658 fread()
0659 stream_get_contents()
0660 fgets() 從文件指針中讀取一行
0661 feof() 測試文件指針是否到了文件結束的位置
0662 fgetc() 從文件指針中讀取字符
0663 file()
0664 readfile() 讀入一個文件並寫入到輸出緩沖
0665 ftell()返回文件指針的當前位置
0666 fseek() 移動文件指針到指定的位置
0667 rewind() 移動文件指針到文件的開頭
0668 flock() 文件鎖定
0669 copy() 復制文件
0670 unlink() 刪除文件
0671 ftruncate() 將文件截斷到指定的長度
0672 rename() 重命名文件或目錄
0673 文件控制
0674 chgrp
0675 chmod ( string $filename , int $mode )
0676 chown
0677 保存讀取文件
0678 -----------把內容存成文件
0679 $cache_file = fopen('f:\1.txt', 'w+');
0680 fwrite($cache_file, $t);
0681 -----------把內容存成文件
0682 $s = "內容";
0683 file_put_contents('f:/2.txt',$s);
0684 -----------把文件內容讀成字符串
0685 $s = file_get_contents('f:/2.txt');
0686 echo $s;
0687 -----------把文件內容按行讀成字符串
0688 $handle = @fopen("f:/2.txt", "r");
0689 if ($handle)
0690 {
0691 while (!feof($handle))
0692 {
0693 $buffer = fgets($handle, 4096);
0694 echo $buffer.'<br>';
0695 }
0696 fclose($handle);
0697 }
0698 ----------
0699
0700 session/cookie
0701 setcookie("MyCookie[foo]", 'Testing 1', time()+3600)
0702 session_start()
0703 ini_set('session.cookie_lifetime',0); session對應cookie存活時間
0704 ini_set('session.save_path', 'dir');
0705 ini_set('session.save_path', '2;session');session分兩級存放
0706 ini_set('session.name','SNS');
0707 客戶端禁用Cookie
0708 session.use_trans_sid = 1 開啟url傳遞sessionId php.ini
0709 session銷毀
0710
0711
0712 mysql
0713 $link = mysql_connect('localhost','root','root') or die(mysql_errno());
0714 mysql_select_db('test') or die (mysql_errno());
0715 mysql_query('SET NAMES gbk');
0716 $sql = "SELECT * FROM test LIMIT 0,20";
0717 $result = mysql_query($sql) or die(mysql_errno());
0718 while($msg = mysql_fetch_array($result)){
0719 print_r($msg);
0720 }
0721 mysql_free_result($result);
0722 mysql_close($link);
0723
0724 mysqli
0725 查詢
0726 -------------------------------過程
0727 $db_host="localhost"; //連接的服務器地址
0728 $db_user="root"; //連接數據庫的用戶名
0729 $db_psw="root"; //連接數據庫的密碼
0730 $db_name="test"; //連接的數據庫名稱
0731 $mysqli=mysqli_connect($db_host,$db_user,$db_psw,$db_name);
0732 mysqli_query($mysqli,'SET NAMES utf8');
0733 $query="select * from users";
0734 $result=mysqli_query($mysqli,$query);
0735 while($row =mysqli_fetch_array($result)) //循環輸出結果集中的記錄
0736 {
0737 echo ($row['id'])."<br>";
0738 echo ($row['username'])."<br>";
0739 echo ($row['password'])."<br>";
0740 echo "<hr>";
0741 }
0742 mysqli_free_result($result);
0743 mysqli_close($mysqli);
0744 -------------------------------對象
0745 $db_host="localhost"; //連接的服務器地址
0746 $db_user="root"; //連接數據庫的用戶名
0747 $db_psw="root"; //連接數據庫的密碼
0748 $db_name="test"; //連接的數據庫名稱
0749 $mysqli=new mysqli($db_host,$db_user,$db_psw,$db_name);
0750 $mysqli->query('SET NAMES utf8');
0751 $query="select * from users";
0752 $result=$mysqli->query($query);
0753 if ($result)
0754 {
0755 if($result->num_rows>0) //判斷結果集中行的數目是否大於0
0756 {
0757 while($row =$result->fetch_array()) //循環輸出結果集中的記錄
0758 {
0759 echo ($row[0])."<br>";
0760 echo ($row[1])."<br>";
0761 echo ($row[2])."<br>";
0762 echo "<hr>";
0763 }
0764 }
0765 }
0766 else
0767 {
0768 echo "查詢失敗";
0769 }
0770 $result->free();
0771 $mysqli->close();
0772
0773 增、刪、改
0774 $mysqli=new mysqli("localhost","root","root","sunyang");//實例化mysqli
0775 $query="delete from employee where emp_id=2";
0776 $result=$mysqli->query($query);
0777 if ($result){
0778 echo "刪除操作執行成功";
0779 }else{
0780 echo "刪除操作執行失敗";
0781 }
0782 $mysqli->close();
0783
0784 綁定結果
0785 $mysqli=new mysqli("localhost","root","root","test"); //實例化mysqli
0786 $query="select * from users";
0787 $result=$mysqli->prepare($query); //進行預准備語句查詢
0788 $result->execute(); //執行預准備語句
0789 $result->bind_result($id,$username,$password); //綁定結果
0790 while ($result->fetch()) {
0791 echo $id.'_';
0792 echo $username.'_';
0793 echo $password;
0794 echo "<br>";
0795 }
0796 $result->close(); //關閉預准備語句
0797 $mysqli->close(); //關閉連接
0798
0799 綁定參數
0800 $mysqli=new mysqli("localhost","root","root","test"); //實例化mysqli
0801 $query="insert into users (id, username, password) values ('',?,?)";
0802 $result=$mysqli->prepare($query);
0803 $result->bind_param("ss",$username,$password); //綁定參數 I:integer D:double S:string B:blob
0804 $username='sy0807';
0805 $password='employee7';
0806 $result->execute(); //執行預准備語句
0807 $result->close();
0808 $mysqli->close();
0809
0810 綁定參數、綁定結果
0811 $mysqli=new mysqli("localhost","root","root","test"); //實例化mysqli
0812 $query="select * from users where id < ?";
0813 $result=$mysqli->prepare($query);
0814 $result->bind_param("i",$id); //綁定參數
0815 $id=10;
0816 $result->execute();
0817 $result->bind_result($id,$username,$password); //綁定結果
0818 while ($result->fetch()) {
0819 echo $id."_";
0820 echo $username."_";
0821 echo $password;
0822 echo "<br>";
0823 }
0824 $result->close();
0825 $mysqli->close();
0826
0827 多條查詢語句
0828 $mysqli=new mysqli("localhost","root","root","test"); //實例化mysqli
0829 $query = "select id from users ;";
0830 $query .= "select id from test ";
0831 if ($mysqli->multi_query($query)) { //執行多個查詢
0832 do {
0833 if ($result = $mysqli->store_result()) {
0834 while ($row = $result->fetch_row()) {
0835 echo $row[0];
0836 echo "<br>";
0837 }
0838 $result->close();
0839 }
0840 if ($mysqli->more_results()) {
0841 echo ("-----------------<br>"); //連個查詢之間的分割線
0842 }
0843 } while ($mysqli->next_result());
0844 }
0845 $mysqli->close();//關閉連接
0846
0847 pdo
0848 查詢
0849 $db = new PDO('mysql:host=localhost;dbname=test', 'root', 'root');
0850 $sql="SELECT * FROM users";
0851 $result = $db->query($sql);
0852 foreach ($result as $row)
0853 {
0854 var_dump($row);
0855 }
0856 $db = null;
0857 增、刪、改、事務開啟
0858 try
0859 {
0860 $db = new PDO('mysql:host=localhost;dbname=test', 'root', 'root');
0861 $db->beginTransaction();
0862 $a = $db->exec("insert into users (id, username, password) values ('', 'Joe', 'Bloggs')");
0863 if($a == false)
0864 {
0865 throw new Exception("sql1執行失敗");
0866 }
0867 $b = $db->exec("insert into users (id, username, password,kkk) values ('', 'Joe', 'Bloggs')");
0868 if($b == false)
0869 {
0870 throw new Exception("sql2執行失敗");
0871 }
0872 $db->commit();
0873 $db = null;
0874 }
0875 catch (Exception $ex)
0876 {
0877 echo $ex;
0878 $db->rollback();
0879 }
0880
0881 緩存
0882 Memcache
0883 .下載memcached, http://www.danga.com/memcached/ ; 2.解壓,比如放在 D:\memcached-1.2.1 ; 3.DOS下輸入‘D:\memcached-1.2.1\memcached.exe -d install’,進行安裝(注意‘’不要輸入); 4.再次輸入‘D:\memcached-1.2.1\memcached.exe -d start’啟動memcached。 注意:memcached以後會隨機啟動。這樣memcached就已經安裝完畢了。
0884
0885 $memcache = new Memcache;
0886 $memcache->addServer('172.19.5.199',11211);
0887 $memcache->addServer('172.19.5.13',11211);
0888 //$memcache->connect('localhost', 11211) or die ("Could not connect");
0889 //$version = $memcache->getVersion();
0890 //echo "Server's version: ".$version;
0891 $memcache->set('key3',array(1,2,3));
0892 var_dump($memcache->get('key3'));
0893
0894 ob
0895 ob_start()
0896 $content = ob_get_contents();
0897 ob_clean();
0898 $cache_file = fopen('f:\1.html', 'w+');
0899 fwrite($cache_file, $content);
0900
0901 頁面靜態化--------------------------------------
0902 ob_start();
0903 $static_file = '1.html';//靜態頁面
0904 $php_file = basename(__FILE__);//當前動態頁面
0905 if (!file_exists($static_file) ||
0906 ((filemtime($static_file)+10) < time()) || //緩存固定時間
0907 filemtime($php_file) > filemtime($static_file)) //源文件已修改
0908 {
0909 echo '靜態頁面示例';
0910 echo 'erer';
0911 $c = ob_get_contents();
0912 ob_clean();
0913 file_put_contents($static_file, $c);
0914 }
0915 $s = file_get_contents($static_file);
0916 echo $s;
0917 -------------------------------------------------
0918 ob_implicit_flush($p) $p:0:關閉 1:開啟(每次輸出後都自動刷新,而不再需要去調用flush())
0919 ob_list_handlers 列出所有使用的輸出句柄
0920 output_add_rewrite_var
0921 output_add_rewrite_var('var', 'value');
0922 echo '<a href="file.php">link</a>';
0923 輸出:<a href="file.php?var=value">link</a>
0924 output_reset_rewrite_vars
0925 output_add_rewrite_var('var', 'value');
0926 echo '<a href="file.php">link</a>';//輸出:<a href="file.php?var=value">link</a>
0927 ob_flush();
0928 output_reset_rewrite_vars();
0929 echo '<a href="file.php">link</a>';//輸出:<a href="file.php">link</a>
0930
0931 偽靜態
0932 首先:
0933 必須要空間支持 Rewrite 以及對站點目錄中有 .htaccess 的文件解析,才有效.
0934 如何讓空間支持Rewrite 和 .htaccess 的文件解析呢 往下看
0935 第一步:要找到apache安裝目錄下的httpd.cof文件,在裡面找到
0936 <Directory />
0937 Options FollowSymLinks
0938 AllowOverride none
0939 </Directory>
0940 把none改all,
0941 第二步:找到以下內容:
0942 #LoadModule rewrite_module modules/mod_rewrite.so
0943 改為
0944 LoadModule rewrite_module modules/mod_rewrite.so
0945 第三步:保存重啟apache。
0946 ok。
0947 其次是.htaccess的書寫規則:
0948
0949 <IfModule mod_rewrite.c>
0950 RewriteEngine On
0951 RewriteBase /
0952 #打開允許符號鏈接
0953 Options FollowSymLinks
0954 RewriteRule smarty/([0-9]+)/([0-9]+) smarty/index.php?id=$1&name=$2
0955 </IfModule>
0956
0957 .htaccess加入以下內容
0958 RewriteEngine On
0959 RewriteBase /
0960 RewriteRule ^(.*)list-id([0-9]+)\.html$ $1/company/search.php?sectorid2=$2
0961 RewriteRule ^(.*)cominfo-([a-z0-9]+)\.html$ $1/member/index.php?uid=$2&type=cominfo
0962 RewriteRule ^(.*)list-([0-9]+)-([0-9]+)\.html$ $1/plus/list.php?typeid=$2&PageNo=$3
0963 RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.lujin\.com$
0964 RewriteCond %{HTTP_HOST} !^(www|bbs)\.lujin\.com$
0965 RewriteRule ^/?$ /%{HTTP_HOST}
0966 RewriteRule ^/([a-z0-9\-]+)\.lujin\.com/?$ /member/index.php?uid=$1 [L]
0967 對上面的一些解釋
0968 RewriteRule ^(.*)list-id([0-9]+)\.html$ $1/company/search.php?sectorid2=$2
0969 這條是把企業庫的分類進行偽靜態處理
0970 原先假設訪問地址為http://www.xxx.com/company/search.php?sectorid2=1
0971 現在地址為http://www.xxx.com/list-id1.html
0972
0973 優點:1、偽靜態處理加速搜索引擎收入
0974 2、地址映射到根目錄,增加權重,提高排名
0975
0976 序列化
0977 __sleep()
0978 __wakeup()
0979 -----------------
0980 $a = array("1"=>"a","2"=>"b","3"=>"c","4"=>"d");
0981 $b = serialize($a);/*序列化*/
0982 var_dump($b);
0983 $f = unserialize($b);/*解析*/
0984 var_dump($f);
0985 ---------------------
0986 class S
0987 {
0988 public $t = 111;
0989 public function t()
0990 {
0991 echo 't function';
0992 }
0993 }
0994 $s = new S;
0995 $t = serialize($s);
0996 $e = unserialize($t);
0997 echo $e->t();
0998 echo $e->t;
0999 --------------------
1000 class S
1001 {
1002 public $id;
1003 public $name;
1004 public function f()
1005 {
1006 echo 'f function';
1007 }
1008 function __sleep()
1009 {
1010 $this->id = uniqid();
1011 return array('id','name');
1012 }
1013 function __wakeup()
1014 {
1015 //$this->id = uniqid();
1016 }
1017 }
1018 $s = new S();
1019 $s->name = 'name';
1020 $e = serialize($s);
1021 $t = unserialize($e);
1022 echo $t->id.'_',$t->name,' ';
1023 echo $t->f();
1024 ----------------------------
1025 class S
1026 {
1027 public $t = 111;
1028 public function t()
1029 {
1030 echo 't function';
1031 }
1032 }
1033 $s = new S;
1034 $t = serialize($s);
1035 $cache_file = fopen('f:/1.txt', 'w+');
1036 fwrite($cache_file, $t);
1037 /*
1038 die;
1039 $e = unserialize($t);
1040 echo $e->t();
1041 echo $e->t;
1042 */
1043 $handle = @fopen("f:/1.txt", "r");
1044 if ($handle)
1045 {
1046 while (!feof($handle))
1047 {
1048 $buffer = fgets($handle, 4096);
1049 break;
1050 }
1051 fclose($handle);
1052 }
1053 $e = unserialize($buffer);
1054 echo $e->t();
1055 echo $e->t;
1056 -----------------------------------------
1057
1058 ThinkPHP2.0
1059 入口文件配置
1060 define('STRIP_RUNTIME_SPACE', false);生成的~runtime.php文件是否去空白和注釋
1061 define('NO_CACHE_RUNTIME', true);不生成核心緩存文件
1062
1063 查詢
1064 按照id排序顯示前6條記錄
1065 $Form = M("Form");
1066 $list = $Form->order('id desc')->limit(6)->select();
1067
1068 取得模板顯示變量的值
1069 $this->assign('tt', 'vvvvvvvvvvvv');
1070 echo $this->get('tt')
1071
1072 成功失敗提示頁
1073 if(false !==$Form->add()) {
1074 $this->success('數據添加成功!');
1075 }else{
1076 $this->error('數據寫入錯誤');
1077 }
1078
1079 自動驗證
1080 array(驗證字段,驗證規則,錯誤提示,驗證條件,附加規則,驗證時間)
1081 驗證規則:require 字段必須、email 郵箱、url URL地址、currency 貨幣、number 數字
1082 Model:: MODEL_INSERT 或者1新增數據時候驗證
1083 Model:: MODEL_UPDATE 或者2編輯數據時候驗證
1084 Model:: MODEL_BOTH 或者3 全部情況下驗證(默認)
1085
1086 protected $_validate = array(
1087 array('verify','require','驗證碼必須!'), //默認情況下用正則進行驗證
1088 array('name','','帳號名稱已經存在!',0,’unique’,1), // 在新增的時候驗證name字段是否唯一
1089 array('value',array(1,2,3),'值的范圍不正確!',2,’in’), // 當值不為空的時候判斷是否在一個范圍內
1090 array('repassword','password','確認密碼不正確',0,’confirm’), // 驗證確認密碼是否和密碼一致
1091 array('password','checkPwd','密碼格式不正確',0,’function’), // 自定義函數驗證密碼格式
1092 );
1093
1094 apache多域名配置
1095 NameVirtualHost *:80
1096 Alias /php/ "f:/php/"
1097 <Directory "f:/php/">
1098 Options Indexes
1099 Order allow,deny
1100 Allow from all
1101 </Directory>
1102 <VirtualHost *:80>
1103 DocumentRoot F:/php
1104 ServerPath F:/php
1105 ServerAlias www.a.com
1106 ServerName www.a.com
1107 </VirtualHost>
1108
1109
1110 <Directory "F:/php2">
1111 Options Indexes
1112 Order allow,deny
1113 Allow from all
1114 </Directory>
1115 <VirtualHost *:80>
1116 ServerName www.b.com
1117 ServerAlias www.b.com
1118 ServerPath F:/php2
1119 DocumentRoot F:/php2
1120 </VirtualHost>
1121
1122
1123
1124 PHP已經更新到很多個版本,最近用的比較多的要數PHP5。下面我們為大家總結了PHP5常用函數,以便大家將來實際編寫代碼中查看。
1125 usleep() 函數延遲代碼執行若干微秒。
1126 unpack() 函數從二進制字符串對數據進行解包。
1127 uniqid() 函數基於以微秒計的當前時間,生成一個唯一的 ID。
1128 time_sleep_until() 函數延遲代碼執行直到指定的時間。
1129 PHP5常用函數之time_nanosleep() 函數延遲代碼執行若干秒和納秒。
1130 sleep() 函數延遲代碼執行若干秒。
1131 show_source() 函數對文件進行語法高亮顯示。
1132 strip_whitespace() 函數返回已刪除 PHP 注釋以及空白字符的源代碼文件。
1133 pack() 函數把數據裝入一個二進制字符串。
1134 ignore_user_abort() 函數設置與客戶機斷開是否會終止腳本的執行。
1135 highlight_string() 函數對字符串進行語法高亮顯示。
1136 highlight_file() 函數對文件進行語法高亮顯示。
1137 PHP5常用函數之get_browser() 函數返回用戶浏覽器的性能。
1138 exit() 函數輸出一條消息,並退出當前腳本。
1139 eval() 函數把字符串按照 PHP 代碼來計算。
1140 die() 函數輸出一條消息,並退出當前腳本。
1141 defined() 函數檢查某常量是否存在。
1142 define() 函數定義一個常量。
1143 constant() 函數返回常量的值。
1144 PHP5常用函數之connection_status() 函數返回當前的連接狀態。
1145 connection_aborted() 函數檢查是否斷開客戶機。
1146 zip_read() 函數讀取打開的 zip 檔案中的下一個文件。
1147 zip_open() 函數打開 ZIP 文件以供讀取。
1148 zip_entry_read() 函數從打開的 zip 檔案項目中獲取內容。
1149 zip_entry_open() 函數打開一個 ZIP 檔案項目以供讀取。
1150 PHP5常用函數之zip_entry_name() 函數返回 zip 檔案項目的名稱。
1151 zip_entry_filesize() 函數返回 zip 檔案項目的原始大小(在壓縮之前)。
1152 zip_entry_compressionmethod() 函數返回 zip 檔案項目的壓縮方法。
1153 zip_entry_compressedsize() 函數返回 zip 檔案項目的壓縮文件尺寸。
1154 zip_entry_close() 函數關閉由 zip_entry_open() 函數打開的 zip 檔案文件。
1155 zip_close() 函數關閉由 zip_open() 函數打開的 zip 檔案文件。
1156 xml_set_unparsed_entity_decl_handler() 函數規定在遇到無法解析的實體名稱(NDATA)聲明時被調用的函數。
1157 xml_set_processing_instruction_handler() 函數規定當解析器在 XML 文檔中找到處理指令時所調用的函數。
1158 xml_set_object() 函數允許在對象中使用 XML 解析器。
1159 PHP5常用函數之xml_set_notation_decl_handler() 函數規定當解析器在 XML 文檔中找到符號聲明時被調用的函數。
1160 xml_set_external_entity_ref_handler() 函數規定當解析器在 XML 文檔中找到外部實體時被調用的函數。
1161 xml_set_element_handler() 函數建立起始和終止元素處理器。
1162 xml_set_default_handler() 函數為 XML 解析器建立默認的數據處理器。
1163 xml_set_character_data_handler() 函數建立字符數據處理器。
1164 xml_parser_set_option() 函數為 XML 解析器進行選項設置。
1165 xml_parser_get_option() 函數從 XML 解析器獲取選項設置信息。
1166 xml_parser_free() 函數釋放 XML 解析器。
1167 PHP5常用函數之xml_parser_create() 函數創建 XML 解析器。
1168 xml_parser_create_ns() 函數創建帶有命名空間支持的 XML 解析器。
1169 xml_parse_into_struct() 函數把 XML 數據解析到數組中。
1170 xml_parse() 函數解析 XML 文檔。
1171 xml_get_error_code() 函數獲取 XML 解析器錯誤代碼。
1172 xml_get_current_line_number() 函數獲取 XML 解析器的當前行號。
1173 xml_get_current_column_number() 函數獲取 XML 解析器的當前列號。
1174 PHP5常用函數之xml_get_current_byte_index() 函數獲取 XML 解析器的當前字節索引。
1175 xml_error_string() 函數獲取 XML 解析器的錯誤描述。
1176 utf8_encode() 函數把 ISO-8859-1 字符串編碼為 UTF-8。
1177 utf8_decode() 函數把 UTF-8 字符串解碼為 ISO-8859-1。
1178 wordwrap() 函數按照指定長度對字符串進行折行處理。
1179 vsprintf() 函數把格式化字符串寫入變量中。
1180 vprintf() 函數輸出格式化的字符串。
1181 vfprintf() 函數把格式化的字符串寫到指定的輸出流。
1182 PHP5常用函數之ucwords() 函數把字符串中每個單詞的首字符轉換為大寫。
1183 ucfirst() 函數把字符串中的首字符轉換為大寫。
1184 trim() 函數從字符串的兩端刪除空白字符和其他預定義字符。
1185 substr_replace() 函數把字符串的一部分替換為另一個字符串。
1186 substr_count() 函數計算子串在字符串中出現的次數。
1187 substr_compare() 函數從指定的開始長度比較兩個字符串。
1188 substr() 函數返回字符串的一部分。
1189 strtr() 函數轉換字符串中特定的字符。
1190 strtoupper() 函數把字符串轉換為大寫。
1191 strtolower() 函數把字符串轉換為小寫。
1192 PHP5常用函數之strtok() 函數把字符串分割為更小的字符串。
1193 strstr() 函數搜索一個字符串在另一個字符串中的第一次出現。
1194 strspn() 函數返回在字符串中包含的特定字符的數目。
1195 strrpos() 函數查找字符串在另一個字符串中最後一次出現的位置。
1196 strripos() 函數查找字符串在另一個字符串中最後一次出現的位置。
1197 strrev() 函數反轉字符串。
1198 strrchr() 函數查找字符串在另一個字符串中最後一次出現的位置,並返回從該位置到字符串結尾的所有字符。
1199 strpos() 函數返回字符串在另一個字符串中第一次出現的位置。
1200 PHP5常用函數之strpbrk() 函數在字符串中搜索指定字符中的任意一個。
1201 strncmp() 函數比較兩個字符串。
1202 strncasecmp() 函數比較兩個字符串。
1203 strnatcmp() 函數使用一種“自然”算法來比較兩個字符串。
1204 strnatcasecmp() 函數使用一種“自然”算法來比較兩個字符串。
1205 strlen() 函數返回字符串的長度。
1206 stristr() 函數查找字符串在另一個字符串中第一次出現的位置。
1207 stripos() 函數返回字符串在另一個字符串中第一次出現的位置。
1208 stripslashes() 函數刪除由 addslashes() 函數添加的反斜槓。
1209 stripcslashes() 函數刪除由 addcslashes() 函數添加的反斜槓。
1210 strip_tags() 函數剝去 HTML、XML 以及 PHP 的標簽。
1211 strcspn() 函數返回在找到任何指定的字符之前,在字符串查找的字符數。
1212 PHP5常用函數之strcoll() 函數比較兩個字符串。
1213 strcmp() 函數比較兩個字符串。
1214 strchr() 函數搜索一個字符串在另一個字符串中的第一次出現。
1215 strcasecmp() 函數比較兩個字符串。
1216 str_word_count() 函數計算字符串中的單詞數。
1217 str_split() 函數把字符串分割到數組中。
1218 str_shuffle() 函數隨機地打亂字符串中的所有字符。
1219 str_rot13() 函數對字符串執行 ROT13 編碼。
1220 str_replace() 函數使用一個字符串替換字符串中的另一些字符。
1221 str_repeat() 函數把字符串重復指定的次數。
1222 str_pad() 函數把字符串填充為指定的長度。
1223 str_ireplace() 函數使用一個字符串替換字符串中的另一些字符。
1224 PHP5常用函數之sscanf() 函數根據指定的格式解析來自一個字符串的輸入。
1225 sprintf() 函數把格式化的字符串寫寫入一個變量中。
1226 soundex() 函數計算字符串的 soundex 鍵。
1227 similar_text() 函數計算兩個字符串的匹配字符的數目。
1228 sha1_file() 函數計算文件的 SHA-1 散列。
1229 sha1() 函數計算字符串的 SHA-1 散列。
1230 setlocale() 函數設置地區信息(地域信息)。
1231 PHP5常用函數之rtrim() P rtrim() 函數