1. 其他
  2.     isset() 变量是否存在
  3.     boolean empty() 检查变量是否存在,并判断值是否为非空或非0
  4.     void unset() 销毁变量
  5.     header('Content-Type: text/html; charset=utf-8');
  6. 	method_exists($obj, $method)	判断对象的方法是否可用
  7. 	file_exists($file)	判断文件是否存在
  8. 	function_exists();
  9. 	class_exists($class_name);
  10.     gettype();获取数据类型
  11.     set_magic_quotes_runtime() 0 for off, 1 for on 当遇到反斜杆、单引号,将会自动加上一个反斜杆,保护系统和数据库的安全
  12. 	ini_set();

  1. 安全
  2. 	function strReplace($str)
  3. 	{
  4. 	  $strResult = $str;
  5. 	  if(!get_magic_quotes_gpc())//判断设置是否开启
  6. 	  {
  7. 		$strResult = addslashes($strResult);//转换sql语句特殊字符
  8. 	  }
  9. 	  return $strResult;
  10. 	}
  11.  
  12.  
  13. 	function quotes($content)
  14. 	{
  15. 		//如果magic_quotes_gpc=Off,那么就开始处理
  16. 		if (!get_magic_quotes_gpc())
  17. 		{
  18. 			//判断$content是否为数组
  19. 			if (is_array($content))
  20. 			{
  21. 				//如果$content是数组,那么就处理它的每一个单无
  22. 				foreach ($content as $key=>$value)
  23. 				{
  24. 					$content[$key] = addslashes($value);
  25. 				}
  26. 			}
  27. 			else
  28. 			{
  29. 				//如果$content不是数组,那么就仅处理一次
  30. 				addslashes($content);
  31. 			}
  32. 		}
  33. 		//返回$content
  34. 		return $content;
  35. 	}
  1. 编码转换
  2. 	string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] )
  3. 	iconv();
  1. 时间
  2. 	date_default_timezone_set("PRC");
  3. 	date("Y-m-d H:i:s");
  4. 	time();
  5. 	date("Y-m-d H:i:s",time()+3600)
  6. 	ini_set('date.timezone', 'PRC');
  7. 	msec sec microtime() 以秒返回时间戳 explode(' ', microtime())
  1. 魔术方法
  2.     __construct() 当实例化一个对象的时候,这个对象的这个方法首先被调用。
  3.     __destruct() 当删除一个对象或对象操作终止的时候,调用该方法。
  4.     __get() 当试图读取一个并不存在的属性的时候被调用。
  5.     __set() 当试图向一个并不存在的属性写入值的时候被调用。
  6.     __call() 当试图调用一个对象并不存在的方法时,调用该方法。
  7.     __toString() 当打印一个对象的时候被调用
  8.     __clone() 当对象被克隆时,被调用
  9. 	__isset()
  10. 	__unset()
  11. 	__autoload($classname)
  12. 	__sleep()
  13. 	__wakeup()
  1. 系统常量
  2.     __FILE__ 当前文件名
  3.     __LINE__ 当前行数
  4.     __FUNCTION__ 当前函数名
  5.     __CLASS__ 当前类名
  6.     __METHOD__ 当前对象的方法名
  7.     PHP_OS 当前系统
  8.     PHP_VERSION php版本
  9.     DIRECTORY_SEPARATOR 根据系统决定目录的分隔符 /\
  10.     PATH_SEPARATOR 根据系统决定环境变量的目录列表分隔符 ; :
  11.     E_ERROR 1
  12.     E_WARNING 2
  13.     E_PARSE 4
  14.     E_NOTICE 8
  15.     M_PI    3.141592
  16.     $_SERVER
  17.     $_ENV 执行环境提交至脚本的变量
  18.     $_GET
  19.     $_POST
  20.     $_REQUEST
  21.     $_FILES
  22.     $_COOKIE
  23.     $_SESSION
  24.     $_GLOBALS
  1. 输出
  2. 	echo   //Output one or more strings
  3. 	print    //Output a string
  4. 	print_r()  //打印关于变量的易于理解的信息。
  5. 	var_dump()  //打印变量的相关信息
  6. 	var_export()  //输出或返回一个变量的字符串表示
  7. 	printf("%.1f",$num)  //Output a formatted string
  8.     sprintf()  //Return a formatted string
  1. 错误处理
  2. 	@1/0
  3. 	error_reporting(E_ALL) 显示所有错误
  4.     error_reporting(0)
  5. 	trigger_error("Cannot divide by zero", E_USER_ERROR);
  6. 	try
  7. 	{
  8. 		throw new Exception("执行失败");
  9. 	}
  10. 	catch (Exception $ex)
  11. 	{
  12. 		echo $ex;
  13. 	}
  1. 字符串处理
  2. 	string trim("eee ") trim ('ffffe','e')  //ltrim rtrim
  3. 	array explode(".", "fff.ff.f") 按指定字符切割
  4. 	string implode(".", $array)  别名:join   把数组值数据按指定字符连接起来
  5. 	array str_split("eeeeeeee",4) 按长度切割字符串
  6.     array split("-","fff-ff-f") 按指定字符切割
  7. 	int strlen('ffffffff')  取字符长度
  8. 	string substr ( string $string , int $start [, int $length ] )
  9.         substr($a,-2, 2) 截取字符
  10. 	int substr_count($text, 'is') 字符串出现的次数
  11. 	string strstr($text, 'h') 第一次出现h后的字符串   //别名:strchr
  12. 	int strpos($text, 'h') 第一次出现h的位置
  13. 	strrpos();最后一次出现h的位置
  14. 	str_replace('a', 'ttt', $t)$t里的'a'替换为'ttt'
  15.     strtr($t,'is','ppp')$t中'is'替换成'ppp'
  16.         strtr("hi all, I said hello", array("hello" => "hi"))'hello'转换成'hi'
  17. 	string md5_file('1.txt',false) 文件数据md5加密
  18. 	int strcmp(string str1, string str2) 字符串比较
  19. 	int strcasecmp(string str1, string str2) 忽略大小写
  20.     string str_pad($i, 10, "-=", STR_PAD_LEFT) 在原字符左边补'-=',直到新字符串长度为10
  21.         STR_PAD_RIGHT
  22.         STR_PAD_BOTH
  23. 	string str_repeat('1', 5) 重复51
  24.     void parse_str('id=11'); echo $id; 将字串符解析为变量
  25. 	array preg_grep("/^(\d+)?\.\d+$/", array(11.2,11,11.2)) 匹配数据
  26. 	array preg_split ("/[\s,]+/", "hypertext language,programming"); 按指定的字符切割
  27. 	array pathinfo(string path [, int options]) 返回文件路径的信息
  28. 	string basename ( string path [, string suffix] ) 返回路径中的文件名部分
  29. 	string dirname ( string path )  $_SERVER[PHP_SELF]  返回路径中的目录部分
  30. 	string nl2br("foo isn't\n bar") "foo isn't<br> bar" 把换行转成<br>
  31. 	string chr ( int ascii )    *
  32. 	mixed str_word_count ( string string [, int format [, string charlist]] )
  33. 	string str_shuffle ('abc') 打乱字符串顺序
  34. 	string strrev($str) *         翻转一个字符串
  35. 	string strtolower($str) *     将字符串 $str 的字符全部转换为小写的
  36. 	string strtoupper($str) *     将字符串 $str 的字符全部转换为大写的
  37. 	string ucfirst ($str)   *       将字符串 $str 的第一个单词的首字母变为大写。
  38. 	string ucwords($str)    *        将字符串 $str 的每个单词的首字母变为大写。
  39.  
  40. 	string addslashes("I'm") I\'m 使用反斜线引用字符串 这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)
  41. 	string stripcslashes("I\'m") I'm 将用addslashes()函数处理后的字符串返回原样
  42. 	strip_tags("<p>tt</p>", '<p>') 去除html、xml、php标记,第二个参数用来保留标记
  43. 	string urlencode(string str)
  44. 	string urldecode(string str)
  45. 	string htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES) 转换特殊字符为HTML字符编码
  46. 		&lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
  47. 		ENT_COMPAT –对双引号进行编码,不对单引号进行编码
  48. 		ENT_QUOTES –对单引号和双引号进行编码
  49. 		ENT_NOQUOTES –不对单引号或双引号进行编码
  50. 	string htmlentities('<p>ff</p>', ENT_QUOTES) 转换特殊字符为HTML字符编码,中文会转成乱码
  1. 数组处理
  2. 	int count( mixed var [, int mode] ) 别名:sizeof() 取数组长度
  3.     string implode(".", $array)  别名:join   把数组值数据按指定字符连接起来
  4. 	array explode(".", "fff.ff.f") 按指定字符切割
  5. 	array range(0, 6, 2) 返回数组 array(0,2,4,6) 第一个参数为起使数,第二个参数为结束数,第三个参数为数据增加步长
  6. 	int array_push($a, "3", 1)'3''1'压入$a,将一个或多个单元压入数组的末尾(入栈),第二个参数开始就是压入的数据
  7. 	void unset ( mixed var [, mixed var [, ...]] )
  8. 	array array_pad ($a, 5, 's')'s'将数组填补到指定长度
  9. 	bool shuffle ( array $array )  将数组打乱
  10. 	mixed array_rand ( array input [, int num_req] )从数组中随机取出一个或多个单元的索引或键名
  11. 	array array_count_values ( array input )统计数组中所有的值出现的次数
  12. 	array array_combine ( array keys, array values ) 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
  13. 	bool array_key_exists ( mixed key, array search )检查给定的键名或索引是否存在于数组中
  14. 	mixed array_search ( mixed needle, array haystack [, bool strict] )在数组中搜索给定的值,如果成功则返回相应的键名
  15. 	bool is_array ( mixed var )
  16. 	bool in_array ( mixed needle, array haystack [, bool strict] )检查数组中是否存在某个值
  17. 	number array_sum ( array array )计算数组中所有值的和
  18. 	array array_unique ( array array )移除数组中重复的值
  19. 	mixed reset ( array &array )将数组的内部指针指向第一个单元
  20. 	mixed current ( array &array )
  21. 	mixed next ( array &array )
  22. 	mixed prev ( array &array )
  23. 	mixed end ( array &array )
  24. 	mixed key ( array &array )
  25. 	array array_keys ( array input [, mixed search_value [, bool strict]] ) 返回数组中所有的键名
  26. 	array array_values ( array input ) 返回数组中所有的值
  27. 	bool print_r ( mixed expression [, bool return] )
  28. 	void var_dump ( mixed expression [, mixed expression [, ...]] )
  29. 	int array_unshift ( array &array, mixed var [, mixed ...] )在数组开头插入一个或多个单元
  30. 	mixed array_shift ( array &array )将数组开头的单元移出数组
  31. 	mixed array_pop ( array &array )将数组最后一个单元弹出(出栈)
  32. 	array array_splice ( array $input, int offset [, int length [, array replacement]] ) 把数组中的一部分去掉并用其它值取代
  33. 	array array_merge ( array array1 [, array array2 [, array ...]] )合并一个或多个数组
  34. 	array array_flip ( array trans )交换数组中的键和值
  35. 	int extract( array var_array [, int extract_type [, string prefix]] ) 从数组中将变量导入到当前的符号表
  36. 	array compact ( mixed varname [, mixed ...] ) 建立一个数组,包括变量名和它们的值
  37. 	bool sort ( array &array [, int sort_flags] )从最低到最高重新安排
  38. 	bool natsort($a)	用“自然排序”算法对数组排序
  39.     bool rsort ( array &array [, int sort_flags] )对数组进行逆向排序(最高到最低)
  40. 	bool asort ( array &array [, int sort_flags] )对数组进行排序并保持索引关系
  41. 	bool arsort ( array &array [, int sort_flags] ) 对数组进行逆向排序并保持索引关系
  42. 	bool ksort ( array &array [, int sort_flags] )对数组按照键名排序
  43. 	bool krsort ( array &array [, int sort_flags] )对数组按照键名逆向排序
  44. 	array array_filter ( array input [, callback callback] ) 用回调函数过滤数组中的单元
  45. 	bool array_walk ( array &array, callback funcname [, mixed userdata] ) 对数组中的每个成员应用用户函数
  46. 	array array_map ( callback callback, array arr1 [, array ...] )将回调函数作用到给定数组的单元上
  47. 	array array_fill ( int start_index, int num, mixed value ) 用给定的值填充数组
  48.         array_fill(5, 3, 'a')-->array(5=>'a',6=>'a',7=>'a')
  49. 	array array_chunk ( array input, int size [, bool preserve_keys] )将一个数组分割成多个
  1. smarty
  2. 	模板引擎将不分析
  3. 		<!--{literal}-->
  4. 		<script>
  5. 			function t() {
  6. 			}
  7. 		</script>
  8. 		<!--{/literal}-->
  9. 	读取配置文件
  10. 		<!--{config_load file="config.s"}-->
  11. 		<!--{#site_url#}-->
  12. 		<!--{$smarty.config.site_url}-->
  13. 	引入文件
  14. 		<!--{include file="index2.html"}-->
  15. 		<!--{include_php file="/path/to/load_nav.php"}--> $trusted_dir 指定目录下的文件
  16. 	捕获模板输出的数据
  17. 		<!--{capture name='eee'}-->
  18. 			fffffffff
  19. 		<!--{/capture}-->
  20. 		<!--{$smarty.capture.eee}-->
  21. 	循环
  22. 		<{section name=loop loop=$News_IN}>
  23. 			<{$News_IN[loop].NewsID}>
  24. 		<{/section}>
  25.  
  26. 		<!--{section name=t loop=$data}-->
  27. 			<tr>
  28. 				<td><!--{$data[t].username}--></td>
  29. 			</tr>
  30. 		<!--{/section}-->
  31.  
  32. 		<{foreach from=$newsArray item=newsID key=k}>
  33. 			新闻编号:<{$newsID.newsID}><br>
  34. 			新闻内容:<{$newsID.newsTitle}><br><hr>
  35. 		<{/foreach}>
  36. 	判断
  37. 		<!--{if true}-->
  38. 			1111
  39. 		<!--{else}-->
  40. 			22222222
  41. 		<!--{/if}-->
  42. 	时间
  43. 		{$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}
  44. 		%Y年%m月%d日 乱码
  45. 			<!--{$smarty.now|date_format:"%Y年%m月%d日 %H时%M分%S秒"}-->
  46. 			修改插件:plugins/modifier.date_format.php
  47. 			$format = mb_convert_encoding($format,'gbk','utf-8');
  48. 			return mb_convert_encoding(strftime($format, $timestamp),'utf-8','gbk');
  49.  
  50. 	局部不缓存
  51. 		html:
  52. 			<!--{$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}-->
  53. 			<!--{cacheless  a="aaa" b="bbbb"}-->
  54. 				<!--{$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}-->
  55. 			<!--{/cacheless}-->
  56. 		php:
  57. 			$smarty->register_block('cacheless', 'smarty_block_dynamic', false);//true:缓存,false:不缓存
  58. 			function smarty_block_dynamic($param, $content, &$smarty)
  59. 			{
  60. 				return $content;
  61. 			}
  62.  
  63. 		php:
  64. 			function insert_kk()//方法名前必须有"insert"
  65. 			{
  66. 				return date('Y-m-d H:i:s');
  67. 			}
  68. 		html:
  69. 			<!--{insert name="kk"}-->
  70. 	自定义方法
  71. 		注册方法
  72. 			php
  73. 				$smarty->register_function('test1', 'test');
  74. 				function test($p)
  75. 				{
  76. 					return 'ffffffffff';
  77. 				}
  78. 			html:
  79. 				<!--{test1 name="ff"}-->
  80. 		------------------------------------------------
  81. 		方法自定义
  82. 			插件文件方式定义方法
  83. 				function.test.php 文件存在plugins目录下,方法名:smarty_function_test($params, &$smarty)
  84. 					function smarty_function_test($params, &$smarty)
  85. 					{
  86. 						return 'fff';
  87. 					}
  88. 			html调用:
  89. 				<!--{test name='aa' p='ff'}-->
  90. 		----------------------------------------------------
  91. 		插入方法
  92. 			插件文件:insert.kk.php文件存于plugins目录下
  93. 				function smarty_insert_kk()
  94. 				{
  95. 					return date('Y-m-d H:i:s');
  96. 				}
  97. 			php:
  98. 				function insert_kk()//方法名前必须有"insert"
  99. 				{
  100. 					return date('Y-m-d H:i:s');
  101. 				}
  102. 			html:
  103. 				<!--{insert name="kk"}-->
  104. 		-------------------------------------------------
  105. 		管道符自定义方法
  106. 			插件文件方式定义方法
  107. 				modifier.test.php 文件存在于plugins目录下,方法名: function smarty_modifier_test($str, $str2)
  108. 					function smarty_modifier_test($str, $str2)
  109. 					{
  110. 						return $str.$str2;
  111. 					}
  112. 			html调用:
  113. 				<!--{'ff'|test:'tt'}-->
  114.  
  115. 			php:
  116. 				function eee($a)
  117. 				{
  118. 					return 'ffffffffffffff';
  119. 				}
  120. 			html:
  121. 				<!--{''|@eee}-->
  122. 	if语句
  123. 		eq相等,
  124. 		ne、neq不相等,
  125. 		gt大于
  126. 		gte、ge大于等于,
  127. 		lte、le 小于等于,
  128. 		not非, mod求模。
  129. 		is [not] div by是否能被某数整除,
  130. 		is [not] even是否为偶数,
  131. 		$a is [not] even by $b($a / $b) % 2 == 0
  132. 		is [not] odd是否为奇
  133. 		$a is not odd by $b即($a / $b) % 2 != 0
  1. XML
  2.     sax
  3. 		xml:
  4. 			<--?xml version="1.0" encoding="utf-8"?-->
  5. 			<books>
  6. 			  <book>
  7. 				  <author>Jack Herrington</author>
  8. 				  <title>PHP Hacks</title>
  9. 				  <publisher>O'Reilly</publisher>
  10. 			  </book>
  11. 			  <book>
  12. 				  <author>Jack Herrington</author>
  13. 				  <title>Podcasting Hacks</title>
  14. 				  <publisher>O'Reilly</publisher>
  15. 			  </book>
  16. 			  <book>
  17. 				  <author>作者</author>
  18. 				  <title>标题</title>
  19. 				  <publisher>出版者</publisher>
  20. 			  </book>
  21. 			</books>
  22. 		php:
  23. 		  $g_books = array();
  24. 		  $g_elem = null;
  25.  
  26. 		  function startElement( $parser, $name, $attrs )
  27. 		  {
  28. 			  global $g_books, $g_elem;
  29. 			  if ( $name == 'BOOK' ) $g_books []= array();
  30. 			  $g_elem = $name;
  31. 		  }
  32.  
  33. 		  function endElement( $parser, $name )
  34. 		  {
  35. 			  global $g_elem;
  36. 			  $g_elem = null;
  37. 		  }
  38.  
  39. 		  function textData( $parser, $text )
  40. 		  {
  41. 			  global $g_books, $g_elem;
  42. 			  if ( $g_elem == 'AUTHOR' ||
  43. 				  $g_elem == 'PUBLISHER' ||
  44. 				  $g_elem == 'TITLE' )
  45. 			  {
  46. 				$g_books[ count( $g_books ) - 1 ][ $g_elem ] = $text;
  47. 			  }
  48. 		  }
  49.  
  50. 		  $parser = xml_parser_create();
  51.  
  52. 		  xml_set_element_handler( $parser, "startElement", "endElement" );
  53. 		  xml_set_character_data_handler( $parser, "textData" );
  54.  
  55. 		  $f = fopen( '1.xml', 'r' );
  56.  
  57. 		  while($data = fread( $f, 4096 ))
  58. 		  {
  59. 			xml_parse( $parser, $data );
  60. 		  }
  61.  
  62. 		  xml_parser_free( $parser );
  63.  
  64. 		  foreach( $g_books as $book )
  65. 		  {
  66. 			  echo $book['TITLE']." - ".$book['AUTHOR']." - ";
  67. 			  echo $book['PUBLISHER']."<br>";
  68. 		  }
  69.     DomDocument()
  70. 		xml:
  71. 			<--?xml version="1.0" encoding="utf-8"?-->
  72. 			<books>
  73. 			  <book>
  74. 				  <author>Jack Herrington</author>
  75. 				  <title>PHP Hacks</title>
  76. 				  <publisher>O'Reilly</publisher>
  77. 			  </book>
  78. 			  <book>
  79. 				  <author>Jack Herrington</author>
  80. 				  <title>Podcasting Hacks</title>
  81. 				  <publisher>O'Reilly</publisher>
  82. 			  </book>
  83. 			  <book>
  84. 				  <author>作者</author>
  85. 				  <title>标题</title>
  86. 				  <publisher>出版者</publisher>
  87. 			  </book>
  88. 			</books>
  89. 		php读取:
  90. 			  $doc = new DOMDocument();
  91. 			  $doc->load( "1.xml");
  92.  
  93. 			  $books = $doc->getElementsByTagName( "book" );
  94. 			  foreach( $books as $book )
  95. 			  {
  96. 				  $authors = $book->getElementsByTagName( "author" );
  97. 				  $author = $authors->item(0)->nodeValue;
  98.  
  99. 				  $publishers = $book->getElementsByTagName( "publisher" );
  100. 				  $publisher = $publishers->item(0)->nodeValue;
  101.  
  102. 				  $titles = $book->getElementsByTagName( "title" );
  103. 				  $title = $titles->item(0)->nodeValue;
  104.  
  105. 				  echo "$title - $author - $publisher<br>";
  106. 			  }
  107. 		php生成:
  108. 			$books = array();
  109. 			$books [] = array(
  110. 				'title' => 'PHP Hacks',
  111. 				'author' => 'Jack Herrington',
  112. 				'publisher' => "O'Reilly"
  113. 				);
  114. 			$books [] = array(
  115. 				'title' => 'Podcasting Hacks',
  116. 				'author' => 'Jack Herrington',
  117. 				'publisher' => "O'Reilly"
  118. 				);
  119.  
  120. 			$doc = new DOMDocument();
  121. 			$doc->formatOutput = true;
  122.  
  123. 			$r = $doc->createElement( "books" );
  124. 			$doc->appendChild( $r );
  125.  
  126. 			foreach( $books as $book )
  127. 			{
  128. 				$b = $doc->createElement( "book" );
  129. 				$author = $doc->createElement( "author" );
  130. 				$author->appendChild($doc->createTextNode( $book['author'] ));
  131. 				$b->appendChild( $author );
  132.  
  133. 				$title = $doc->createElement( "title" );
  134. 				$title->appendChild($doc->createTextNode( $book['title'] ));
  135. 				$b->appendChild( $title );
  136.  
  137. 				$publisher = $doc->createElement( "publisher" );
  138. 				$publisher->appendChild($doc->createTextNode( $book['publisher'] ));
  139. 				$b->appendChild( $publisher );
  140. 				$r->appendChild( $b );
  141. 			}
  142.  
  143. 			echo $doc->saveXML();
  144. 			echo $doc->save('222.xml');
  145.     SimpleXML
  146. 		xml:
  147. 		<books>
  148. 		  <book>
  149. 			  <author>Jack Herrington</author>
  150. 			  <title>PHP Hacks</title>
  151. 			  <publisher>O'Reilly</publisher>
  152. 		  </book>
  153. 		</books>
  154. 		php:
  155. 		$xml = new SimpleXMLElement('1.xml', NULL, TRUE);
  156. 		echo $xml->book[0]->author."___".$xml->book[0]->title."___".$xml->book[0]->publisher;
  1. 正则
  2. 	ereg系列的正则表达式不需要定届符,preg系列的才需要,并且定界符可以自己选择,只有前后一对就行,比如我们一般使用/符号,但是如果里面有/需要匹配那么就需要使用\/来表示,/需要出现多次的时候,这样就不方便,我们就可以使用其他的定界符,比如|
  3.  
  4.  
  5. 	正则特殊字符
  6. 		. \ + * ? [ ^ ] $ ( ) { } = ! < > | :
  7.     由原子(普通字符,如英文字符)
  8.     元字符(有特殊功用的字符)
  9.     模式修正字符
  10.     一个正则表达式中,至少包含一个原子
  11.  
  12.     全部符号解释
  13.         \  将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。
  14.         ^  匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。
  15.         $  匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。
  16.         *  匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
  17.         +  匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
  18.         ?  匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
  19.         {n}  n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
  20.         {n,}  n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
  21.         {n,m}  m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。
  22.         ?  当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。
  23.         .  匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。
  24.         (pattern)  匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用 $0$9 属性。要匹配圆括号字符,请使用 '\(' 或 '\)'。
  25.         (?:pattern)  匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。
  26.         (?=pattern)  正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
  27.         (?!pattern)  负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
  28.         x|y  匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。
  29.         [xyz]  字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
  30.         [^xyz]  负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。
  31.         [a-z]  字符范围。匹配指定范围内的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。
  32.         [^a-z]  负值字符范围。匹配任何不在指定范围内的任意字符。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。
  33.         \b  匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。
  34.         \B  匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
  35.         \cx  匹配由 x 指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
  36.         \d  匹配一个数字字符。等价于 [0-9]。
  37.         \D  匹配一个非数字字符。等价于 [^0-9]。
  38.         \f  匹配一个换页符。等价于 \x0c 和 \cL。
  39.         \n  匹配一个换行符。等价于 \x0a 和 \cJ。
  40.         \r  匹配一个回车符。等价于 \x0d 和 \cM。
  41.         \s  匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
  42.         \S  匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
  43.         \t  匹配一个制表符。等价于 \x09 和 \cI。
  44.         \v  匹配一个垂直制表符。等价于 \x0b 和 \cK。
  45.         \w  匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。
  46.         \W  匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。
  47.         \xn  匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,'\x41' 匹配 "A"。'\x041' 则等价于 '\x04' & "1"。正则表达式中可以使用 ASCII 编码。.
  48.         \num  匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,'(.)\1' 匹配两个连续的相同字符。
  49.         \n  标识一个八进制转义值或一个向后引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为向后引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。
  50.         \nm  标识一个八进制转义值或一个向后引用。如果 \nm 之前至少有 nm 个获得子表达式,则 nm 为向后引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm。
  51.         \nml  如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。
  52.         \un  匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如, \u00A9 匹配版权符号 (?)。
  53.     例子
  54.         /\b([a-z]+)\b/i 单词数量
  55.         /(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/  将一个URL解析为协议、域、端口及相对路径
  56.         /^(?:Chapter|Section) [1-9][0-9]{0,1}$/ 定位章节的位置
  57.         /[-a-z]/ A至z共26个字母再加一个-号。
  58.         /ter\b/ 可匹配chapter,而不能terminal
  59.         /\Bapt/ 可匹配chapter,而不能aptitude
  60.         /Windows(?=95 |98 |NT )/ 可匹配Windows95或Windows98或WindowsNT,当找到一个匹配后,从Windows后面开始进行下一次的检索匹配。
  61.         ^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$ Email 合法格式检查
  62.         ^[0-9]+$ 纯数据检查
  63.         ^[0-9a-z]{1}[0-9a-z\-]{0,19}$ 用户名检查,字母和数字开始,只能含字母、数字、横杠
  64.  
  65.     模式修正符
  66.         i 忽略大小写
  67.         s 如果设定了此修正符,模式中的圆点元字符(.)匹配所有的字符,包括换行符
  68.         e 只用在preg_replace(),在替换字符串中对逆向引用作正常的替换,将其作为 PHP 代码求值,并用其结果来替换所搜索的字符串。
  69.         如:
  70.         $p = '/\[colorFont\](.+?)\[\/colorFont\]/ie';
  71.         $t = '"<img src='color.php?t=".urlencode("\1")."\'/>"';
  72.         ecoh preg_replace($p,$t,$string);
  73.         这里必须加上e修正,才能将匹配到的内容用urlencode处理
  74.         U 贪婪模式,最大限度匹配
  75. :/a[\w]+?e/U匹配abceadeddd中的abceade而不是abce,如果不加U修正,则匹配abce
  76.         A 强制从字符串开头匹配,即自动在模式开头加上^
  77.         m 当设定了此修正符,“行起始” ^ 和“行结束” $ 除了匹配整个字符串开头和结束外,还分别匹配其中的换行符的之后和之前。如果目标字符串中没有“\n”字符或者模式中没有 ^ 或 $,则设定此修正符没有任何效果。
  78.         D 模式中的美元元字符仅匹配目标字符串的结尾。没有此选项时,如果最后一个字符是换行符的话,美元符号也会匹配此字符之前。如果设定了 m 修正符则忽略此选项
  79. 	例子
  80. 		匹配中文
  81. 			preg_match_all('/[^\x00-\x80]+/', '中华s人s民', $a)
  82. 			如果你的文件是gb2312的,用/[\xa0-\xff]{2}/
  83. 			如果是utf8的,用/[\xe0-\xef][\x80-\xbf]{2}/
  84. 		匹配邮箱地址
  85. 			preg_match('/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/', 'shao@gmail.com')
  86. 		替换空白字符
  87. 			$s = preg_replace('/[\s\v]+/','','	sss sdd ss ');
  88. 		替换
  89. 			$string = "April 15, 2003";
  90. 			$pattern = "/(\w+) (\d+), (\d+)/i";
  91. 			$replacement = "\${1}1,\${3}1-$2";
  92. 			echo preg_replace($pattern, $replacement, $string);
  93. 		匹配帐号是否合法(字母开头,允许5-6字节,允许字母数字下划线)
  94. 			preg_match('/^[a-zA-Z][a-zA-Z0-9_]{4,5}$/', 'a011a')
  95. 		匹配数字
  96. 			/^-\d*$/ 匹配负整数
  97. 			/^-?\d*$/ 匹配整数
  98. 		匹配浮点数
  99. 			preg_match("/^-?(\d*.\d*|0.\d*|0?.0+|0)$/", "11")
  100. 		匹配电话号码
  101. 			preg_match("/^(0[0-9]{2,3}\-)?([2-9][0-9]{6,7}){1,1}(\-[0-9]{1,4}){0,1}$/","0511-22345678-11")
  102. 		匹配手机号码
  103. 			preg_match("/^1(3|5)\d{9}$/","13717897211")
  1. 文件处理
  2. 	文件属性
  3. 		file_exists('1.php') 文件或目录是否存在
  4. 		filesize() 取得文件大小
  5. 		is_readable() 判断给定文件名是否可读
  6. 		is_writable() 判断给定文件名是否可写
  7. 		is_executable() 判断给定文件名是否可执行
  8. 		filectime() 获取文件的创造时间
  9. 		filemtime() 获取文件的修改时间
  10. 		fileatime() 获取文件的访问时间
  11. 		stat() 获取文件大部分属性值
  12. 	解析目录
  13. 		basename() 返回路径中的文件名部分
  14. 		dirname() 返回目录
  15. 		pathinfo() 返回目录名、基本名和扩展名的关联数组
  16. 	遍历目录
  17. 		opendir() 打开指定目录
  18. 		readdir() 关闭指定目录
  19. 		closedir() 关闭指定目录
  20. 		rewinddir() 倒回目录句柄
  21. 			$dir_handle=opendir('.');
  22. 			while($file=readdir($dir_handle))
  23. 			{
  24. 				echo filesize($file).'___'.$file.'<br>';
  25. 			}
  26. 			closedir($dir_handle);
  27. 	建立和删除目录
  28. 		mkdir() 创建目录
  29. 		rmdir() 删除空目录
  30. 	文件操作
  31. 		fopen()
  32. 		fclose()
  33. 		fwrite() 写入文件
  34. 		fputs() fwrite的别名
  35. 		file_put_contents($文件名,$内容) 把内容存成文件
  36. 		file_get_contents() 从文件读出内容
  37. 	文件读取
  38. 		fread()
  39. 		stream_get_contents()
  40. 		fgets() 从文件指针中读取一行
  41. 		feof() 测试文件指针是否到了文件结束的位置
  42. 		fgetc() 从文件指针中读取字符
  43. 		file()
  44. 		readfile() 读入一个文件并写入到输出缓冲
  45. 		ftell()返回文件指针的当前位置
  46. 		fseek() 移动文件指针到指定的位置
  47. 		rewind() 移动文件指针到文件的开头
  48. 		flock() 文件锁定
  49. 		copy() 复制文件
  50. 		unlink() 删除文件
  51. 		ftruncate() 将文件截断到指定的长度
  52. 		rename() 重命名文件或目录
  53. 	文件控制
  54. 		chgrp
  55. 		chmod ( string $filename , int $mode )
  56. 		chown
  57. 	保存读取文件
  58. 		-----------把内容存成文件
  59. 		$cache_file = fopen('f:\1.txt', 'w+');
  60. 		fwrite($cache_file, $t);
  61. 		-----------把内容存成文件
  62. 		$s = "内容";
  63. 		file_put_contents('f:/2.txt',$s);
  64. 		-----------把文件内容读成字符串
  65. 		$s = file_get_contents('f:/2.txt');
  66. 		echo $s;
  67. 		-----------把文件内容按行读成字符串
  68. 		$handle = @fopen("f:/2.txt", "r");
  69. 		if ($handle)
  70. 		{
  71. 			while (!feof($handle))
  72. 			{
  73. 				$buffer = fgets($handle, 4096);
  74. 				echo $buffer.'<br>';
  75. 			}
  76. 			fclose($handle);
  77. 		}
  78. 		----------
  1. session/cookie
  2. 	setcookie("MyCookie[foo]", 'Testing 1', time()+3600)
  3. 	session_start()
  4. 	ini_set('session.cookie_lifetime',0); session对应cookie存活时间
  5. 	ini_set('session.save_path', 'dir');
  6. 	ini_set('session.save_path', '2;session');session分两级存放
  7. 	ini_set('session.name','SNS');
  8. 	客户端禁用Cookie
  9. 		session.use_trans_sid = 1 开启url传递sessionId php.ini
  10. 	session销毁
  1. mysql
  2. 	$link = mysql_connect('localhost','root','root') or die(mysql_errno());
  3. 	mysql_select_db('test') or die (mysql_errno());
  4. 	mysql_query('SET NAMES gbk');
  5. 	$sql = "SELECT * FROM test LIMIT 0,20";
  6. 	$result = mysql_query($sql) or die(mysql_errno());
  7. 	while($msg = mysql_fetch_array($result)){
  8. 		print_r($msg);
  9. 	}
  10. 	mysql_free_result($result);
  11. 	mysql_close($link);
  1. mysqli
  2. 	查询
  3. 		-------------------------------过程
  4. 		$db_host="localhost";   //连接的服务器地址
  5. 		$db_user="root";    //连接数据库的用户名
  6. 		$db_psw="root";     //连接数据库的密码
  7. 		$db_name="test"; //连接的数据库名称
  8. 		$mysqli=mysqli_connect($db_host,$db_user,$db_psw,$db_name);
  9. 		mysqli_query($mysqli,'SET NAMES utf8');
  10. 		$query="select * from users";
  11. 		$result=mysqli_query($mysqli,$query);
  12. 		while($row =mysqli_fetch_array($result)) //循环输出结果集中的记录
  13. 		{
  14. 			echo ($row['id'])."<br>";
  15. 			echo ($row['username'])."<br>";
  16. 			echo ($row['password'])."<br>";
  17. 			echo "<hr>";
  18. 		}
  19. 		mysqli_free_result($result);
  20. 		mysqli_close($mysqli);
  21. 		-------------------------------对象
  22. 		$db_host="localhost";   //连接的服务器地址
  23. 		$db_user="root";    //连接数据库的用户名
  24. 		$db_psw="root";     //连接数据库的密码
  25. 		$db_name="test"; //连接的数据库名称
  26. 		$mysqli=new mysqli($db_host,$db_user,$db_psw,$db_name);
  27. 		$mysqli->query('SET NAMES utf8');
  28. 		$query="select * from users";
  29. 		$result=$mysqli->query($query);
  30. 		if ($result)
  31. 		{
  32. 			if($result->num_rows>0) //判断结果集中行的数目是否大于0
  33. 			{
  34. 				while($row =$result->fetch_array()) //循环输出结果集中的记录
  35. 				{
  36. 					echo ($row[0])."<br>";
  37. 					echo ($row[1])."<br>";
  38. 					echo ($row[2])."<br>";
  39. 					echo "<hr>";
  40. 				}
  41. 			}
  42. 		}
  43. 		else
  44. 		{
  45. 			echo "查询失败";
  46. 		}
  47. 		$result->free();
  48. 		$mysqli->close();
  49.  
  50. 	增、删、改
  51. 		$mysqli=new mysqli("localhost","root","root","sunyang");//实例化mysqli
  52. 		$query="delete from employee where emp_id=2";
  53. 		$result=$mysqli->query($query);
  54. 		if ($result){
  55. 			echo "删除操作执行成功";
  56. 		}else{
  57. 			echo "删除操作执行失败";
  58. 		}
  59. 		$mysqli->close();
  60.  
  61. 	绑定结果
  62. 		$mysqli=new mysqli("localhost","root","root","test");      //实例化mysqli
  63. 		$query="select * from users";
  64. 		$result=$mysqli->prepare($query);                 //进行预准备语句查询
  65. 		$result->execute();                           //执行预准备语句
  66. 		$result->bind_result($id,$username,$password);         //绑定结果
  67. 		while ($result->fetch()) {
  68. 			echo $id.'_';
  69. 			echo $username.'_';
  70. 			echo $password;
  71. 			echo "<br>";
  72. 		}
  73. 		$result->close();                             //关闭预准备语句
  74. 		$mysqli->close();                             //关闭连接
  75.  
  76. 	绑定参数
  77. 		$mysqli=new mysqli("localhost","root","root","test");          //实例化mysqli
  78. 		$query="insert into users (id, username, password)   values ('',?,?)";
  79. 		$result=$mysqli->prepare($query);
  80. 		$result->bind_param("ss",$username,$password);            //绑定参数 I:integer D:double S:string B:blob
  81. 		$username='sy0807';
  82. 		$password='employee7';
  83. 		$result->execute();                               //执行预准备语句
  84. 		$result->close();
  85. 		$mysqli->close();
  86.  
  87. 	绑定参数、绑定结果
  88. 		$mysqli=new mysqli("localhost","root","root","test");      //实例化mysqli
  89. 		$query="select * from users where id < ?";
  90. 		$result=$mysqli->prepare($query);
  91. 		$result->bind_param("i",$id);                 //绑定参数
  92. 		$id=10;
  93. 		$result->execute();
  94. 		$result->bind_result($id,$username,$password);         //绑定结果
  95. 		while ($result->fetch()) {
  96. 			echo $id."_";
  97. 			echo $username."_";
  98. 			echo $password;
  99. 			echo "<br>";
  100. 		}
  101. 		$result->close();
  102. 		$mysqli->close();
  103.  
  104. 	多条查询语句
  105. 		$mysqli=new mysqli("localhost","root","root","test");          //实例化mysqli
  106. 		$query = "select id from users ;";
  107. 		$query .= "select id from test ";
  108. 		if ($mysqli->multi_query($query)) {                   //执行多个查询
  109. 			do {
  110. 				if ($result = $mysqli->store_result()) {
  111. 					while ($row = $result->fetch_row()) {
  112. 						echo $row[0];
  113. 						echo "<br>";
  114. 					}
  115. 					$result->close();
  116. 				}
  117. 				if ($mysqli->more_results()) {
  118. 					echo ("-----------------<br>");                       //连个查询之间的分割线
  119. 				}
  120. 			} while ($mysqli->next_result());
  121. 		}
  122. 		$mysqli->close();//关闭连接
  1. pdo
  2. 	查询
  3. 		$db = new PDO('mysql:host=localhost;dbname=test', 'root', 'root');
  4. 		$sql="SELECT * FROM users";
  5. 		$result = $db->query($sql);
  6. 		foreach ($result as $row)
  7. 		{
  8. 			var_dump($row);
  9. 		}
  10. 		$db = null;
  11. 	增、删、改、事务开启
  12. 		try
  13. 		{
  14. 			$db = new PDO('mysql:host=localhost;dbname=test', 'root', 'root');
  15. 			$db->beginTransaction();
  16. 			$a = $db->exec("insert into users (id, username, password) values ('', 'Joe', 'Bloggs')");
  17. 			if($a == false)
  18. 			{
  19. 				throw new Exception("sql1执行失败");
  20. 			}
  21. 			$b = $db->exec("insert into users (id, username, password,kkk) values ('', 'Joe', 'Bloggs')");
  22. 			if($b == false)
  23. 			{
  24. 				throw new Exception("sql2执行失败");
  25. 			}
  26. 			$db->commit();
  27. 			$db = null;
  28. 		}
  29. 		catch (Exception $ex)
  30. 		{
  31. 			echo $ex;
  32. 			$db->rollback();
  33. 		}
  1. 缓存
  2. 	Memcache
  3. 		.下载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就已经安装完毕了。
  4.  
  5. 		$memcache = new Memcache;
  6. 		$memcache->addServer('172.19.5.199',11211);
  7. 		$memcache->addServer('172.19.5.13',11211);
  8. 		//$memcache->connect('localhost', 11211) or die ("Could not connect");
  9. 		//$version = $memcache->getVersion();
  10. 		//echo "Server's version: ".$version;
  11. 		$memcache->set('key3',array(1,2,3));
  12. 		var_dump($memcache->get('key3'));
  13.  
  14. 	ob
  15. 		ob_start()
  16. 		$content = ob_get_contents();
  17. 		ob_clean();
  18. 		$cache_file = fopen('f:\1.html', 'w+');
  19. 		fwrite($cache_file, $content);
  20.  
  21. 		页面静态化--------------------------------------
  22. 		ob_start();
  23. 		$static_file = '1.html';//静态页面
  24. 		$php_file = basename(__FILE__);//当前动态页面
  25. 		if (!file_exists($static_file) ||
  26. 			((filemtime($static_file)+10) < time()) || //缓存固定时间
  27. 			filemtime($php_file) > filemtime($static_file)) //源文件已修改
  28. 		{
  29. 			echo '静态页面示例';
  30. 			echo 'erer';
  31. 			$c = ob_get_contents();
  32. 			ob_clean();
  33. 			file_put_contents($static_file, $c);
  34. 		}
  35. 		$s = file_get_contents($static_file);
  36. 		echo $s;
  37. 		-------------------------------------------------
  38. 		ob_implicit_flush($p)  $p:0:关闭 1:开启(每次输出后都自动刷新,而不再需要去调用flush())
  39. 		ob_list_handlers 列出所有使用的输出句柄
  40. 		output_add_rewrite_var
  41. 			output_add_rewrite_var('var', 'value');
  42. 			echo '<a href="file.php">link</a>';
  43. 			输出:<a href="file.php?var=value">link</a>
  44. 		output_reset_rewrite_vars
  45. 			output_add_rewrite_var('var', 'value');
  46. 			echo '<a href="file.php">link</a>';//输出:<a href="file.php?var=value">link</a>
  47. 			ob_flush();
  48. 			output_reset_rewrite_vars();
  49. 			echo '<a href="file.php">link</a>';//输出:<a href="file.php">link</a>
  1. 伪静态
  2. 	首先:
  3. 	必须要空间支持 Rewrite 以及对站点目录中有 .htaccess 的文件解析,才有效.
  4. 	如何让空间支持Rewrite 和 .htaccess 的文件解析呢 往下看
  5. 	第一步:要找到apache安装目录下的httpd.cof文件,在里面找到
  6. 	<Directory />
  7. 		Options FollowSymLinks
  8. 		AllowOverride none
  9. 	</Directory>
  10. 	把none改all,
  11. 	第二步:找到以下内容:
  12. 	#LoadModule rewrite_module modules/mod_rewrite.so
  13. 	改为
  14. 	LoadModule rewrite_module modules/mod_rewrite.so
  15. 	第三步:保存重启apache。
  16. 	ok。
  17. 	其次是.htaccess的书写规则:
  18.  
  19. 		<IfModule mod_rewrite.c>
  20. 			RewriteEngine On
  21. 			RewriteBase /
  22. 			#打开允许符号链接
  23. 			Options FollowSymLinks
  24. 			RewriteRule smarty/([0-9]+)/([0-9]+) smarty/index.php?id=$1&name=$2
  25. 		</IfModule>
  26.  
  27. 	.htaccess加入以下内容
  28. 	RewriteEngine On
  29. 	RewriteBase /
  30. 	RewriteRule ^(.*)list-id([0-9]+)\.html$ $1/company/search.php?sectorid2=$2
  31. 	RewriteRule ^(.*)cominfo-([a-z0-9]+)\.html$ $1/member/index.php?uid=$2&type=cominfo
  32. 	RewriteRule ^(.*)list-([0-9]+)-([0-9]+)\.html$ $1/plus/list.php?typeid=$2&PageNo=$3
  33. 	RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.lujin\.com$
  34. 	RewriteCond %{HTTP_HOST} !^(www|bbs)\.lujin\.com$
  35. 	RewriteRule ^/?$ /%{HTTP_HOST}
  36. 	RewriteRule ^/([a-z0-9\-]+)\.lujin\.com/?$ /member/index.php?uid=$1 [L]
  37. 	对上面的一些解释
  38. 	RewriteRule ^(.*)list-id([0-9]+)\.html$ $1/company/search.php?sectorid2=$2
  39. 	这条是把企业库的分类进行伪静态处理
  40. 	原先假设访问地址为http://www.xxx.com/company/search.php?sectorid2=1
  41. 	现在地址为http://www.xxx.com/list-id1.html
  42.  
  43. 	优点:1、伪静态处理加速搜索引擎收入
  44. 	2、地址映射到根目录,增加权重,提高排名
  1. 序列化
  2. 	__sleep()
  3. 	__wakeup()
  4. 	-----------------
  5. 	$a = array("1"=>"a","2"=>"b","3"=>"c","4"=>"d");
  6. 	$b = serialize($a);/*序列化*/
  7. 	var_dump($b);
  8. 	$f = unserialize($b);/*解析*/
  9. 	var_dump($f);
  10. 	---------------------
  11. 	class S
  12. 	{
  13. 		public $t = 111;
  14. 		public function t()
  15. 		{
  16. 			echo 't function';
  17. 		}
  18. 	}
  19. 	$s = new S;
  20. 	$t = serialize($s);
  21. 	$e = unserialize($t);
  22. 	echo $e->t();
  23. 	echo $e->t;
  24. 	--------------------
  25. 	class S
  26. 	{
  27. 		public $id;
  28. 		public $name;
  29. 		public function f()
  30. 		{
  31. 			echo 'f function';
  32. 		}
  33. 		function __sleep()
  34. 		{
  35. 			$this->id = uniqid();
  36. 			return array('id','name');
  37. 		}
  38. 		function __wakeup()
  39. 		{
  40. 			//$this->id = uniqid();
  41. 		}
  42. 	}
  43. 	$s = new S();
  44. 	$s->name = 'name';
  45. 	$e = serialize($s);
  46. 	$t = unserialize($e);
  47. 	echo $t->id.'_',$t->name,' ';
  48. 	echo $t->f();
  49. 	----------------------------
  50. 	class S
  51. 	{
  52. 		public $t = 111;
  53. 		public function t()
  54. 		{
  55. 			echo 't function';
  56. 		}
  57. 	}
  58. 	$s = new S;
  59. 	$t = serialize($s);
  60. 	$cache_file = fopen('f:/1.txt', 'w+');
  61. 	fwrite($cache_file, $t);
  62. 	/*
  63. 	die;
  64. 	$e = unserialize($t);
  65. 	echo $e->t();
  66. 	echo $e->t;
  67. 	*/
  68. 	$handle = @fopen("f:/1.txt", "r");
  69. 	if ($handle)
  70. 	{
  71. 		while (!feof($handle))
  72. 		{
  73. 			$buffer = fgets($handle, 4096);
  74. 			break;
  75. 		}
  76. 		fclose($handle);
  77. 	}
  78. 	$e = unserialize($buffer);
  79. 	echo $e->t();
  80. 	echo $e->t;
  81. 	-----------------------------------------
  1. ThinkPHP2.0
  2. 	入口文件配置
  3. 		define('STRIP_RUNTIME_SPACE', false);生成的~runtime.php文件是否去空白和注释
  4. 		define('NO_CACHE_RUNTIME', true);不生成核心缓存文件
  5.  
  6. 	查询
  7. 		按照id排序显示前6条记录
  8. 		$Form	= M("Form");
  9. 		$list	=	$Form->order('id desc')->limit(6)->select();
  10.  
  11. 	取得模板显示变量的值
  12. 		$this->assign('tt', 'vvvvvvvvvvvv');
  13. 		echo $this->get('tt')
  14.  
  15. 	成功失败提示页
  16. 		if(false !==$Form->add()) {
  17. 			$this->success('数据添加成功!');
  18. 		}else{
  19. 			$this->error('数据写入错误');
  20. 		}
  21.  
  22. 	自动验证
  23. 		array(验证字段,验证规则,错误提示,验证条件,附加规则,验证时间)
  24. 		验证规则:require 字段必须、email 邮箱、url URL地址、currency 货币、number 数字
  25. 		Model:: MODEL_INSERT 或者1新增数据时候验证
  26. 		Model:: MODEL_UPDATE 或者2编辑数据时候验证
  27. 		Model:: MODEL_BOTH 或者3 全部情况下验证(默认)
  28.  
  29. 		protected $_validate = array(
  30. 			array('verify','require','验证码必须!'), //默认情况下用正则进行验证
  31. 			array('name','','帐号名称已经存在!',0,’unique’,1), // 在新增的时候验证name字段是否唯一
  32. 			array('value',array(1,2,3),'值的范围不正确!',2,’in’), // 当值不为空的时候判断是否在一个范围内
  33. 			array('repassword','password','确认密码不正确',0,’confirm’), // 验证确认密码是否和密码一致
  34. 			array('password','checkPwd','密码格式不正确',0,function), // 自定义函数验证密码格式
  35. 		);
  1. apache多域名配置
  2. 	NameVirtualHost *:80
  3. 	Alias /php/  "f:/php/"
  4. 	<Directory "f:/php/">
  5. 		Options Indexes
  6. 		Order allow,deny
  7. 		Allow from all
  8. 	</Directory>
  9. 	<VirtualHost *:80>
  10. 		DocumentRoot F:/php
  11. 		ServerPath F:/php
  12. 		ServerAlias www.a.com
  13. 		ServerName www.a.com
  14. 	</VirtualHost>
  15.  
  16.  
  17. 	<Directory "F:/php2">
  18. 		Options Indexes
  19. 		Order allow,deny
  20. 		Allow from all
  21. 	</Directory>
  22. 	<VirtualHost *:80>
  23. 		ServerName www.b.com
  24. 		ServerAlias www.b.com
  25. 		ServerPath F:/php2
  26. 		DocumentRoot F:/php2
  27. 	</VirtualHost>
  1. PHP已经更新到很多个版本,最近用的比较多的要数PHP5。下面我们为大家总结了PHP5常用函数,以便大家将来实际编写代码中查看。
  2.   usleep() 函数延迟代码执行若干微秒。
  3.   unpack() 函数从二进制字符串对数据进行解包。
  4.   uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。
  5.   time_sleep_until() 函数延迟代码执行直到指定的时间。
  6.   PHP5常用函数之time_nanosleep() 函数延迟代码执行若干秒和纳秒。
  7.   sleep() 函数延迟代码执行若干秒。
  8.   show_source() 函数对文件进行语法高亮显示。
  9.   strip_whitespace() 函数返回已删除 PHP 注释以及空白字符的源代码文件。
  10.   pack() 函数把数据装入一个二进制字符串。
  11.   ignore_user_abort() 函数设置与客户机断开是否会终止脚本的执行。
  12.   highlight_string() 函数对字符串进行语法高亮显示。
  13.   highlight_file() 函数对文件进行语法高亮显示。
  14.   PHP5常用函数之get_browser() 函数返回用户浏览器的性能。
  15.   exit() 函数输出一条消息,并退出当前脚本。
  16.   eval() 函数把字符串按照 PHP 代码来计算。
  17.   die() 函数输出一条消息,并退出当前脚本。
  18.   defined() 函数检查某常量是否存在。
  19.   define() 函数定义一个常量。
  20.   constant() 函数返回常量的值。
  21.   PHP5常用函数之connection_status() 函数返回当前的连接状态。
  22.   connection_aborted() 函数检查是否断开客户机。
  23.   zip_read() 函数读取打开的 zip 档案中的下一个文件。
  24.   zip_open() 函数打开 ZIP 文件以供读取。
  25.   zip_entry_read() 函数从打开的 zip 档案项目中获取内容。
  26.   zip_entry_open() 函数打开一个 ZIP 档案项目以供读取。
  27.   PHP5常用函数之zip_entry_name() 函数返回 zip 档案项目的名称。
  28.   zip_entry_filesize() 函数返回 zip 档案项目的原始大小(在压缩之前)
  29.   zip_entry_compressionmethod() 函数返回 zip 档案项目的压缩方法。
  30.   zip_entry_compressedsize() 函数返回 zip 档案项目的压缩文件尺寸。
  31.   zip_entry_close() 函数关闭由 zip_entry_open() 函数打开的 zip 档案文件。
  32.   zip_close() 函数关闭由 zip_open() 函数打开的 zip 档案文件。
  33.   xml_set_unparsed_entity_decl_handler() 函数规定在遇到无法解析的实体名称(NDATA)声明时被调用的函数。
  34.   xml_set_processing_instruction_handler() 函数规定当解析器在 XML 文档中找到处理指令时所调用的函数。
  35.   xml_set_object() 函数允许在对象中使用 XML 解析器。
  36.   PHP5常用函数之xml_set_notation_decl_handler() 函数规定当解析器在 XML 文档中找到符号声明时被调用的函数。
  37.   xml_set_external_entity_ref_handler() 函数规定当解析器在 XML 文档中找到外部实体时被调用的函数。
  38.   xml_set_element_handler() 函数建立起始和终止元素处理器。
  39.   xml_set_default_handler() 函数为 XML 解析器建立默认的数据处理器。
  40.   xml_set_character_data_handler() 函数建立字符数据处理器。
  41.   xml_parser_set_option() 函数为 XML 解析器进行选项设置。
  42.   xml_parser_get_option() 函数从 XML 解析器获取选项设置信息。
  43.   xml_parser_free() 函数释放 XML 解析器。
  44.   PHP5常用函数之xml_parser_create() 函数创建 XML 解析器。
  45.   xml_parser_create_ns() 函数创建带有命名空间支持的 XML 解析器。
  46.   xml_parse_into_struct() 函数把 XML 数据解析到数组中。
  47.   xml_parse() 函数解析 XML 文档。
  48.   xml_get_error_code() 函数获取 XML 解析器错误代码。
  49.   xml_get_current_line_number() 函数获取 XML 解析器的当前行号。
  50.   xml_get_current_column_number() 函数获取 XML 解析器的当前列号。
  51.   PHP5常用函数之xml_get_current_byte_index() 函数获取 XML 解析器的当前字节索引。
  52.   xml_error_string() 函数获取 XML 解析器的错误描述。
  53.   utf8_encode() 函数把 ISO-8859-1 字符串编码为 UTF-8
  54.   utf8_decode() 函数把 UTF-8 字符串解码为 ISO-8859-1
  55.   wordwrap() 函数按照指定长度对字符串进行折行处理。
  56.   vsprintf() 函数把格式化字符串写入变量中。
  57.   vprintf() 函数输出格式化的字符串。
  58.   vfprintf() 函数把格式化的字符串写到指定的输出流。
  59.   PHP5常用函数之ucwords() 函数把字符串中每个单词的首字符转换为大写。
  60.   ucfirst() 函数把字符串中的首字符转换为大写。
  61.   trim() 函数从字符串的两端删除空白字符和其他预定义字符。
  62.   substr_replace() 函数把字符串的一部分替换为另一个字符串。
  63.   substr_count() 函数计算子串在字符串中出现的次数。
  64.   substr_compare() 函数从指定的开始长度比较两个字符串。
  65.   substr() 函数返回字符串的一部分。
  66.   strtr() 函数转换字符串中特定的字符。
  67.   strtoupper() 函数把字符串转换为大写。
  68.   strtolower() 函数把字符串转换为小写。
  69.   PHP5常用函数之strtok() 函数把字符串分割为更小的字符串。
  70.   strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。
  71.   strspn() 函数返回在字符串中包含的特定字符的数目。
  72.   strrpos() 函数查找字符串在另一个字符串中最后一次出现的位置。
  73.   strripos() 函数查找字符串在另一个字符串中最后一次出现的位置。
  74.   strrev() 函数反转字符串。
  75.   strrchr() 函数查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。
  76.   strpos() 函数返回字符串在另一个字符串中第一次出现的位置。
  77.   PHP5常用函数之strpbrk() 函数在字符串中搜索指定字符中的任意一个。
  78.   strncmp() 函数比较两个字符串。
  79.   strncasecmp() 函数比较两个字符串。
  80.   strnatcmp() 函数使用一种“自然”算法来比较两个字符串。
  81.   strnatcasecmp() 函数使用一种“自然”算法来比较两个字符串。
  82.   strlen() 函数返回字符串的长度。
  83.   stristr() 函数查找字符串在另一个字符串中第一次出现的位置。
  84.   stripos() 函数返回字符串在另一个字符串中第一次出现的位置。
  85.   stripslashes() 函数删除由 addslashes() 函数添加的反斜杠。
  86.   stripcslashes() 函数删除由 addcslashes() 函数添加的反斜杠。
  87.   strip_tags() 函数剥去 HTML、XML 以及 PHP 的标签。
  88.   strcspn() 函数返回在找到任何指定的字符之前,在字符串查找的字符数。
  89.   PHP5常用函数之strcoll() 函数比较两个字符串。
  90.   strcmp() 函数比较两个字符串。
  91.   strchr() 函数搜索一个字符串在另一个字符串中的第一次出现。
  92.   strcasecmp() 函数比较两个字符串。
  93.   str_word_count() 函数计算字符串中的单词数。
  94.   str_split() 函数把字符串分割到数组中。
  95.   str_shuffle() 函数随机地打乱字符串中的所有字符。
  96.   str_rot13() 函数对字符串执行 ROT13 编码。
  97.   str_replace() 函数使用一个字符串替换字符串中的另一些字符。
  98.   str_repeat() 函数把字符串重复指定的次数。
  99.   str_pad() 函数把字符串填充为指定的长度。
  100.   str_ireplace() 函数使用一个字符串替换字符串中的另一些字符。
  101.   PHP5常用函数之sscanf() 函数根据指定的格式解析来自一个字符串的输入。
  102.   sprintf() 函数把格式化的字符串写写入一个变量中。
  103.   soundex() 函数计算字符串的 soundex 键。
  104.   similar_text() 函数计算两个字符串的匹配字符的数目。
  105.   sha1_file() 函数计算文件的 SHA-1 散列。
  106.   sha1() 函数计算字符串的 SHA-1 散列。
  107.   setlocale() 函数设置地区信息(地域信息)
  108.   PHP5常用函数之rtrim() P rtrim() 函数

转自:http://my.oschina.net/tenking/blog/29863

发表评论

电子邮件地址不会被公开。 必填项已用*标注