当前位置:  开发笔记 > 编程语言 > 正文

给大家分享21个常用的PHP函数代码段

给大家分享21个常用的PHP函数代码段
分享21个常用的PHP函数代码段

  1. 1. PHP可阅读随机字符串
  2. 此代码将创建一个可阅读的字符串,使其更接近词典中的单词,实用且具有密码验证功能。
  3. /**************
  4. *@length – length of random string (must be a multiple of 2)
  5. **************/
  6. function readable_random_string($length = 6){
  7. $conso=array(“b”,”c”,”d”,”f”,”g”,”h”,”j”,”k”,”l”,
  8. “m”,”n”,”p”,”r”,”s”,”t”,”v”,”w”,”x”,”y”,”z”);
  9. $vocal=array(“a”,”e”,”i”,”o”,”u”);
  10. $password=”";
  11. srand ((double)microtime()*1000000);
  12. $max = $length/2;
  13. for($i=1; $i<=$max; $i++)
  14. {
  15. $password.=$conso[rand(0,19)];
  16. $password.=$vocal[rand(0,4)];
  17. }
  18. return $password;
  19. }
  20. 2. PHP生成一个随机字符串
  21. 如果不需要可阅读的字符串,使用此函数替代,即可创建一个随机字符串,作为用户的随机密码等。
  22. /*************
  23. *@l – length of random string
  24. */
  25. function generate_rand($l){
  26. $c= “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789″;
  27. srand((double)microtime()*1000000);
  28. for($i=0; $i<$l; $i++) {
  29. $rand.= $c[rand()%strlen($c)];
  30. }
  31. return $rand;
  32. }
  33. 3. PHP编码电子邮件地址
  34. 使用此代码,可以将任何电子邮件地址编码为 html 字符实体,以防止被垃圾邮件程序收集。
  35. function encode_email($email=’info@domain.com’, $linkText=’Contact Us’, $attrs =’class=”emailencoder”‘ )
  36. {
  37. // remplazar aroba y puntos
  38. $email = str_replace(‘@’, ‘@’, $email);
  39. $email = str_replace(‘.’, ‘.’, $email);
  40. $email = str_split($email, 5);
  41. $linkText = str_replace(‘@’, ‘@’, $linkText);
  42. $linkText = str_replace(‘.’, ‘.’, $linkText);
  43. $linkText = str_split($linkText, 5);
  44. $part1 = ‘$part2 = ‘ilto:’;
  45. $part3 = ‘” ‘. $attrs .’ >’;
  46. $part4 = ‘’;
  47. $encoded = ‘’;
  48. return $encoded;
  49. }
  50. 4. PHP验证邮件地址
  51. 电子邮件验证也许是中最常用的网页表单验证,此代码除了验证电子邮件地址,也可以选择检查邮件域所属 DNS 中的 MX 记录,使邮件验证功能更加强大。
  52. function is_valid_email($email, $test_mx = false)
  53. {
  54. if(eregi(“^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$”, $email))
  55. if($test_mx)
  56. {
  57. list($username, $domain) = split(“@”, $email);
  58. return getmxrr($domain, $mxrecords);
  59. }
  60. else
  61. return true;
  62. else
  63. return false;
  64. }
  65. 5. PHP列出目录内容
  66. function list_files($dir)
  67. {
  68. if(is_dir($dir))
  69. {
  70. if($handle = opendir($dir))
  71. {
  72. while(($file = readdir($handle)) !== false)
  73. {
  74. if($file != “.” && $file != “..” && $file != “Thumbs.db”)
  75. {
  76. echo ‘’.$file.’
  77. ’.”\n”;
  78. }
  79. }
  80. closedir($handle);
  81. }
  82. }
  83. }
  84. 6. PHP销毁目录
  85. 删除一个目录,包括它的内容。
  86. /*****
  87. *@dir – Directory to destroy
  88. *@virtual[optional]- whether a virtual directory
  89. */
  90. function destroyDir($dir, $virtual = false)
  91. {
  92. $ds = DIRECTORY_SEPARATOR;
  93. $dir = $virtual ? realpath($dir) : $dir;
  94. $dir = substr($dir, -1) == $ds ? substr($dir, 0, -1) : $dir;
  95. if (is_dir($dir) && $handle = opendir($dir))
  96. {
  97. while ($file = readdir($handle))
  98. {
  99. if ($file == ‘.’ || $file == ‘..’)
  100. {
  101. continue;
  102. }
  103. elseif (is_dir($dir.$ds.$file))
  104. {
  105. destroyDir($dir.$ds.$file);
  106. }
  107. else
  108. {
  109. unlink($dir.$ds.$file);
  110. }
  111. }
  112. closedir($handle);
  113. rmdir($dir);
  114. return true;
  115. }
  116. else
  117. {
  118. return false;
  119. }
  120. }
  121. 7. PHP解析 JSON 数据
  122. 与大多数流行的 Web 服务如 twitter 通过开放 API 来提供数据一样,它总是能够知道如何解析 API 数据的各种传送格式,包括 JSON,XML 等等。
  123. $json_string=’{“id”:1,”name”:”foo”,”email”:”foo@foobar.com”,”interest”:["wordpress","php"]} ‘;
  124. $obj=json_decode($json_string);
  125. echo $obj->name; //prints foo
  126. echo $obj->interest[1]; //prints php
  127. 8. PHP解析 XML 数据
  128. //xml string
  129. $xml_string=”
  130. Foo
  131. foo@bar.com
  132. Foobar
  133. foobar@foo.com
  134. ”;
  135. //load the xml string using simplexml
  136. $xml = simplexml_load_string($xml_string);
  137. //loop through the each node of user
  138. foreach ($xml->user as $user)
  139. {
  140. //access attribute
  141. echo $user['id'], ‘ ‘;
  142. //subnodes are accessed by -> operator
  143. echo $user->name, ‘ ‘;
  144. echo $user->email, ‘
  145. ’;
  146. }
  147. 9. PHP创建日志缩略名
  148. 创建用户友好的日志缩略名。
  149. function create_slug($string){
  150. $slug=preg_replace(‘/[^A-Za-z0-9-]+/’, ‘-’, $string);
  151. return $slug;
  152. }
  153. 10. PHP获取客户端真实 IP 地址
  154. 该函数将获取用户的真实 IP 地址,即便他使用代理服务器。
  155. function getRealIpAddr()
  156. {
  157. if (!emptyempty($_SERVER['HTTP_CLIENT_IP']))
  158. {
  159. $ip=$_SERVER['HTTP_CLIENT_IP'];
  160. }
  161. elseif (!emptyempty($_SERVER['HTTP_X_FORWARDED_FOR']))
  162. //to check ip is pass from proxy
  163. {
  164. $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
  165. }
  166. else
  167. {
  168. $ip=$_SERVER['REMOTE_ADDR'];
  169. }
  170. return $ip;
  171. }
  172. 11. PHP强制性文件下载
  173. 为用户提供强制性的文件下载功能。
  174. /********************
  175. *@file – path to file
  176. */
  177. function force_download($file)
  178. {
  179. if ((isset($file))&&(file_exists($file))) {
  180. header(“Content-length: “.filesize($file));
  181. header(‘Content-Type: application/octet-stream’);
  182. header(‘Content-Disposition: attachment; filename=”‘ . $file . ‘”‘);
  183. readfile(“$file”);
  184. } else {
  185. echo “No file selected”;
  186. }
  187. }
  188. 12. PHP创建标签云
  189. function getCloud( $data = array(), $minFontSize = 12, $maxFontSize = 30 )
  190. {
  191. $minimumCount = min( array_values( $data ) );
  192. $maximumCount = max( array_values( $data ) );
  193. $spread = $maximumCount – $minimumCount;
  194. $cloudHTML = ”;
  195. $cloudTags = array();
  196. $spread == 0 && $spread = 1;
  197. foreach( $data as $tag => $count )
  198. {
  199. $size = $minFontSize + ( $count – $minimumCount )
  200. * ( $maxFontSize – $minFontSize ) / $spread;
  201. $cloudTags[] = ‘. ‘” href=”#” title=”\” . $tag .
  202. ‘\’ returned a count of ‘ . $count . ‘”>’
  203. . htmlspecialchars( stripslashes( $tag ) ) . ‘’;
  204. }
  205. return join( “\n”, $cloudTags ) . “\n”;
  206. }
  207. /**************************
  208. **** Sample usage ***/
  209. $arr = Array(‘Actionscript’ => 35, ‘Adobe’ => 22, ‘Array’ => 44, ‘Background’ => 43,
  210. ‘Blur’ => 18, ‘Canvas’ => 33, ‘Class’ => 15, ‘Color Palette’ => 11, ‘Crop’ => 42,
  211. ‘Delimiter’ => 13, ‘Depth’ => 34, ‘Design’ => 8, ‘Encode’ => 12, ‘Encryption’ => 30,
  212. ‘Extract’ => 28, ‘Filters’ => 42);
  213. echo getCloud($arr, 12, 36);
  214. 13. PHP寻找两个字符串的相似性
  215. PHP 提供了一个极少使用的 similar_text 函数,但此函数非常有用,用于比较两个字符串并返回相似程度的百分比。
  216. similar_text($string1, $string2, $percent);
  217. //$percent will have the percentage of similarity
  218. 14. PHP在应用程序中使用 Gravatar 通用头像
  219. 随着 WordPress 越来越普及,Gravatar 也随之流行。由于 Gravatar 提供了易于使用的 API,将其纳入应用程序也变得十分方便。
  220. /******************
  221. *@email – Email address to show gravatar for
  222. *@size – size of gravatar
  223. *@default – URL of default gravatar to use
  224. *@rating – rating of Gravatar(G, PG, R, X)
  225. */
  226. function show_gravatar($email, $size, $default, $rating)
  227. {
  228. echo ‘‘&default=’.$default.’&size=’.$size.’&rating=’.$rating.’” ftp):/”, $_POST['url'])) {
  229. $_POST['url'] = ‘http://’.$_POST['url'];
  230. }
  231. 19. PHP将网址字符串转换成超级链接
  232. 该函数将 URL 和 E-mail 地址字符串转换为可点击的超级链接。
  233. function makeClickableLinks($text) {
  234. $text = eregi_replace(‘(((f|ht)lianqiangjavatp://)[-a-zA-Z0-9@:%_+.~#?&//=]+)’,
  235. ‘\1’, $text);
  236. $text = eregi_replace(‘([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)’,
  237. ‘\1\2’, $text);
  238. $text = eregi_replace(‘([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})’,
  239. ‘\1’, $text);
  240. return $text;
  241. }
  242. 20. PHP调整图像尺寸
  243. 创建图像缩略图需要许多时间,此代码将有助于了解缩略图的逻辑。
  244. /**********************
  245. *@filename – path to the image
  246. *@tmpname – temporary path to thumbnail
  247. *@xmax – max width
  248. *@ymax – max height
  249. */
  250. function resize_image($filename, $tmpname, $xmax, $ymax)
  251. {
  252. $ext = explode(“.”, $filename);
  253. $ext = $ext[count($ext)-1];
  254. if($ext == “jpg” || $ext == “jpeg”)
  255. $im = imagecreatefromjpeg($tmpname);
  256. elseif($ext == “png”)
  257. $im = imagecreatefrompng($tmpname);
  258. elseif($ext == “gif”)
  259. $im = imagecreatefromgif($tmpname);
  260. $x = imagesx($im);
  261. $y = imagesy($im);
  262. if($x <= $xmax && $y <= $ymax)
  263. return $im;
  264. if($x >= $y) {
  265. $newx = $xmax;
  266. $newy = $newx * $y / $x;
  267. }
  268. else {
  269. $newy = $ymax;
  270. $newx = $x / $y * $newy;
  271. }
  272. $im2 = imagecreatetruecolor($newx, $newy);
  273. imagecopyresized($im2, $im, 0, 0, 0, 0, floor($newx), floor($newy), $x, $y);
  274. return $im2;
  275. }
  276. 21. PHP检测 ajax 请求
  277. 大多数的 JavaScript 框架如 jquery,Mootools 等,在发出 Ajax 请求时,都会发送额外的 HTTP_X_REQUESTED_WITH 头部信息,头当他们一个ajax请求,因此你可以在服务器端侦测到 Ajax 请求。
  278. if(!emptyempty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == ‘xmlhttprequest’){
  279. //If AJAX Request Then
  280. }else{
  281. //something else
  282. }

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有