设为首页 收藏本站
查看: 627|回复: 0

[经验分享] 使用的php代码

[复制链接]

尚未签到

发表于 2017-3-24 11:36:00 | 显示全部楼层 |阅读模式

  • 1. PHP可阅读随机字符串
  • // 此代码将创建一个可阅读的字符串,使其更接近词典中的单词,实用且具有密码验证功能。

  • functionreadable_random_string($length= 6) {
  • $conso= array("b","c", "d","f", "g","h", "j","k", "l","m", "n","p", "r","s", "t","v", "w","x", "y","z");
  • $vocal= array("a","e", "i","o", "u");
  • $password= "";
  • srand ( ( double ) microtime () * 1000000 );
  • $max= $length/ 2;
  • for($i= 1;$i<= $max;$i++) {
  • $password.= $conso[rand ( 0, 19 )];
  • $password.= $vocal[rand ( 0, 4 )];
  • }
  • return$password;
  • }

  • //  2. PHP生成一个随机字符串
  • //  如果不需要可阅读的字符串,使用此函数替代,即可创建一个随机字符串,作为用户的随机密码等。

  • functiongenerate_rand($l) {
  • $c= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  • srand ( ( double ) microtime () * 1000000 );
  • for($i= 0;$i< $l;$i++) {
  • $rand.= $c[rand () %strlen( $c)];
  • }
  • return$rand;
  • }

  • //  3. PHP编码电子邮件地址
  • //  使用此代码,可以将任何电子邮件地址编码为 html 字符实体,以防止被垃圾邮件程序收集。

  • functionencode_email($email='info@domain.com', $linkText='Contact Us', $attrs='class="emailencoder"') {
  • // remplazar aroba y puntos
  • $email= str_replace('@', '@',$email);
  • $email= str_replace('.', '.',$email);
  • $email= str_split($email, 5 );

  • $linkText= str_replace('@', '@',$linkText);
  • $linkText= str_replace('.', '.',$linkText);
  • $linkText= str_split($linkText, 5 );

  • $part1= '<a href="ma';
  • $part2= 'ilto:';
  • $part3= '" '.$attrs. ' >';
  • $part4= '</a>';

  • $encoded= '<script type="text/javascript">';
  • $encoded.= "document.write('$part1');";
  • $encoded.= "document.write('$part2');";
  • foreach( $emailas$e) {
  • $encoded.= "document.write('$e');";
  • }
  • $encoded.= "document.write('$part3');";
  • foreach( $linkTextas$l) {
  • $encoded.= "document.write('$l');";
  • }
  • $encoded.= "document.write('$part4');";
  • $encoded.= '</script>';

  • return$encoded;
  • }

  • //  4. PHP验证邮件地址
  • //  电子邮件验证也许是中最常用的网页表单验证,此代码除了验证电子邮件地址,也可以选择检查邮件域所属 DNS 中的 MX 记录,使邮件验证功能更加强大。

  • functionis_valid_email($email,$test_mx= false) {
  • if(eregi("^([_a-z0-9-]+)(.[_a-z0-9-]+)*@([a-z0-9-]+)(.[a-z0-9-]+)*(.[a-z]{2,4})$",$email))
  • if($test_mx) {
  • list ( $username, $domain) = split ("@", $email);
  • returngetmxrr($domain, $mxrecords);
  • } else
  • returntrue;
  • else
  • returnfalse;
  • }

  • //  5. PHP列出目录内容

  • functionlist_files($dir) {
  • if(is_dir($dir)) {
  • if($handle= opendir ($dir)) {
  • while( ($file= readdir ($handle)) !== false ) {
  • if($file!="."&& $file!=".."&& $file!="Thumbs.db") {
  • echo'<a target="_blank" href="'.$dir. $file.'">'. $file.'</a><br>'. "n";
  • }
  • }
  • closedir( $handle);
  • }
  • }
  • }

  • //  6. PHP销毁目录
  • //  删除一个目录,包括它的内容。

  • functiondestroyDir($dir,$virtual= false) {
  • $ds= DIRECTORY_SEPARATOR;
  • $dir= $virtual?realpath( $dir) :$dir;
  • $dir= substr($dir, - 1 ) == $ds?substr( $dir, 0, - 1 ) :$dir;
  • if(is_dir($dir) && $handle= opendir ($dir)) {
  • while( $file= readdir ($handle) ) {
  • if($file=='.'|| $file=='..') {
  • continue;
  • } elseif(is_dir($dir. $ds.$file)) {
  • destroyDir ( $dir. $ds.$file);
  • } else{
  • unlink ( $dir. $ds.$file);
  • }
  • }
  • closedir( $handle);
  • rmdir( $dir);
  • returntrue;
  • } else{
  • returnfalse;
  • }
  • }

  • //  7. PHP解析 JSON 数据
  • //  与大多数流行的 Web 服务如 twitter 通过开放 API 来提供数据一样,它总是能够知道如何解析 API 数据的各种传送格式,包括 JSON,XML 等等。

  • $json_string= '{"id":1,"name":"foo","email":"foo@foobar.com","interest":["wordpress","php"]} ';
  • $obj= json_decode ( $json_string);
  • echo$obj->name;//prints foo
  • echo$obj->interest [1];//prints php

  • //  8. PHP解析 XML 数据
  • //xml string
  • $xml_string= "<?xml version='1.0'?>
  • <users>
  • <user id='398'>
  • <name>Foo</name>
  • <email>'\"mailto:foo@bar.com\"'>foo@bar.com</name>
  • </user>
  • <user id='867'>
  • <name>Foobar</name>
  • <email>'\"mailto:foobar@foo.com\"'>foobar@foo.com</name>
  • </user>
  • </users>";

  • //load the xml string using simplexml
  • $xml= simplexml_load_string ( $xml_string);

  • //loop through the each node of user
  • foreach( $xml->useras$user) {
  • //access attribute
  • echo$user['id'],' ';
  • //subnodes are accessed by -> operator
  • echo$user->name,' ';
  • echo$user->email,'<br />';
  • }

  • //  9. PHP创建日志缩略名
  • //  创建用户友好的日志缩略名。
  • functioncreate_slug($string) {
  • $slug= preg_replace ( '/[^A-Za-z0-9-]+/','-', $string);
  • return$slug;
  • }

  • //  10. PHP获取客户端真实 IP 地址
  • //  该函数将获取用户的真实 IP 地址,即便他使用代理服务器。
  • functiongetRealIpAddr() {
  • if(! emptyempty ( $_SERVER['HTTP_CLIENT_IP'] )) {
  • $ip= $_SERVER['HTTP_CLIENT_IP'];
  • } elseif(! emptyempty ( $_SERVER['HTTP_X_FORWARDED_FOR'] ))//to check ip is pass from proxy
  • {
  • $ip= $_SERVER['HTTP_X_FORWARDED_FOR'];
  • } else{
  • $ip= $_SERVER['REMOTE_ADDR'];
  • }
  • return$ip;
  • }

  • //  11. PHP强制性文件下载
  • //  为用户提供强制性的文件下载功能。

  • functionforce_download($file) {
  • if((isset ( $file)) && (file_exists($file))) {
  • header ( "Content-length: ". filesize( $file) );
  • header ( 'Content-Type: application/octet-stream');
  • header ( 'Content-Disposition: attachment; filename="'.$file. '"');
  • readfile ( "$file");
  • } else{
  • echo"No file selected";
  • }
  • }

  • //  12. PHP创建标签云

  • functiongetCloud($data=array(), $minFontSize= 12,$maxFontSize= 30) {
  • $minimumCount= min ( array_values($data) );
  • $maximumCount= max ( array_values($data) );
  • $spread= $maximumCount-$minimumCount;
  • $cloudHTML= '';
  • $cloudTags= array();

  • $spread== 0 && $spread= 1;

  • foreach( $dataas$tag=>$count) {
  • $size= $minFontSize+ ($count-$minimumCount) * ($maxFontSize-$minFontSize) / $spread;
  • $cloudTags[] = '<a style="font-size: '.floor( $size) .'px'. '" href="#" title="'' . $tag . '' returned a count of '.$count. '">'. htmlspecialchars (stripslashes( $tag) ) .'</a>';
  • }

  • returnjoin ( "n",$cloudTags) . "n";
  • }
  • /**************************
  • $arr = Array ('Actionscript' => 35, 'Adobe' => 22, 'Array' => 44, 'Background' => 43, 'Blur' => 18, 'Canvas' => 33, 'Class' => 15, 'Color Palette' => 11, 'Crop' => 42, 'Delimiter' => 13, 'Depth' => 34, 'Design' => 8, 'Encode'=> 12, 'Encryption' => 30, 'Extract' => 28, 'Filters' => 42 );
  • echo getCloud ( $arr, 12, 36 );

  • //  13. PHP寻找两个字符串的相似性
  • //  PHP 提供了一个极少使用的 similar_text 函数,但此函数非常有用,用于比较两个字符串并返回相似程度的百分比。


  • similar_text ( $string1, $string2, $percent );
  • //$percent will have the percentage of similarity

  • //  14. PHP在应用程序中使用 Gravatar 通用头像
  • //  随着 WordPress 越来越普及,Gravatar 也随之流行。由于 Gravatar 提供了易于使用的 API,将其纳入应用程序也变得十分方便。

  • function show_gravatar($email, $size, $default, $rating) {
  • echo '<img src="http://www.gravatar.com/avatar.php?gravatar_id=' . md5 ( $email ) . '&default=' . $default . '&size=' . $size . '&rating=' . $rating . '" width="' . $size . 'px"
  • height="' . $size . 'px" />';
  • }

  • //  15. PHP在字符断点处截断文字
  • //  所谓断字 (word break),即一个单词可在转行时断开的地方。这一函数将在断字处截断字符串。

  • function myTruncate($string, $limit, $break = ".", $pad = "...") {
  • // return with no change if string is shorter than $limit
  • if (strlen ( $string ) <= $limit)
  • return $string;

  • // is $break present between $limit and the end of the string?
  • if (false !== ($breakpoint = strpos ( $string, $break, $limit ))) {
  • if ($breakpoint < strlen ( $string ) - 1) {
  • $string = substr ( $string, 0, $breakpoint ) . $pad;
  • }
  • }
  • return $string;
  • }
  • /***** Example ****/
  • $short_string= myTruncate ( $long_string, 100, ' ');

  • //  16. PHP文件 Zip 压缩

  • functioncreate_zip($files=array(), $destination='', $overwrite= false) {
  • //if the zip file already exists and overwrite is false, return false
  • if(file_exists($destination) && ! $overwrite) {
  • returnfalse;
  • }
  • //vars
  • $valid_files= array();
  • //if files were passed in...
  • if(is_array($files)) {
  • //cycle through each file
  • foreach( $filesas$file) {
  • //make sure the file exists
  • if(file_exists($file)) {
  • $valid_files[] = $file;
  • }
  • }
  • }
  • //if we have good files...
  • if(count($valid_files)) {
  • //create the archive
  • $zip= newZipArchive ();
  • if($zip->open ($destination, $overwrite? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE ) !== true) {
  • returnfalse;
  • }
  • //add the files
  • foreach( $valid_filesas$file) {
  • $zip->addFile ( $file,$file);
  • }
  • //debug
  • //echo 'The zip archive contains ',$zip->numFiles,' files with a status of ',$zip->status;


  • //close the zip -- done!
  • $zip->close ();

  • //check to make sure the file exists
  • returnfile_exists($destination);
  • } else{
  • returnfalse;
  • }
  • }
  • /***** Example Usage ***/
  • $files= array('file1.jpg','file2.jpg', 'file3.gif');
  • create_zip ( $files, 'myzipfile.zip', true );

  • //  17. PHP解压缩 Zip 文件

  • functionunzip_file($file,$destination) {
  • // create object
  • $zip= newZipArchive ();
  • // open archive
  • if($zip->open ($file) !== TRUE) {
  • die(’Could not open archive’)
  • ;
  • }
  • // extract contents to destination directory
  • $zip->extractTo ( $destination);
  • // close archive
  • $zip->close ();
  • echo'Archive extracted to directory';
  • }

  • //  18. PHP为 URL 地址预设 http 字符串
  • //  有时需要接受一些表单中的网址输入,但用户很少添加 http:// 字段,此代码将为网址添加该字段。


  • if(! preg_match ( "/^(http|ftp):/",$_POST['url'] )) {
  • $_POST['url'] ='http://'. $_POST['url'];
  • }

  • //  19. PHP将网址字符串转换成超级链接
  • //  该函数将 URL 和 E-mail 地址字符串转换为可点击的超级链接。

  • functionmakeClickableLinks($text) {
  • $text= eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_+.~#?&//=]+)','<a href="1">1</a>', $text);
  • $text= eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)','1<a href="http://2">2</a>', $text);
  • $text= eregi_replace('([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})','<a href="mailto:1">1</a>', $text);

  • return$text;
  • }

  • //  20. PHP调整图像尺寸
  • //  创建图像缩略图需要许多时间,此代码将有助于了解缩略图的逻辑。

  • functionresize_image($filename,$tmpname, $xmax,$ymax) {
  • $ext= explode(".", $filename);
  • $ext= $ext[count($ext) - 1];

  • if($ext=="jpg"|| $ext=="jpeg")
  • $im= imagecreatefromjpeg ( $tmpname);
  • elseif($ext=="png")
  • $im= imagecreatefrompng ( $tmpname);
  • elseif($ext=="gif")
  • $im= imagecreatefromgif ( $tmpname);

  • $x= imagesx ( $im);
  • $y= imagesy ( $im);

  • if($x<=$xmax&& $y<=$ymax)
  • return$im;

  • if($x>=$y) {
  • $newx= $xmax;
  • $newy= $newx*$y/ $x;
  • } else{
  • $newy= $ymax;
  • $newx= $x/$y* $newy;
  • }

  • $im2= imagecreatetruecolor ( $newx, $newy);
  • imagecopyresized ( $im2, $im, 0, 0, 0, 0, floor($newx), floor($newy), $x,$y);
  • return$im2;
  • }

  • //  21. PHP检测 ajax 请求
  • //  大多数的 JavaScript 框架如 jquery,Mootools 等,在发出 Ajax 请求时,都会发送额外的 HTTP_X_REQUESTED_WITH 头部信息,头当他们一个ajax请求,因此你可以在服务器端侦测到 Ajax 请求。

  • if(! emptyempty ( $_SERVER['HTTP_X_REQUESTED_WITH'] ) &&strtolower( $_SERVER['HTTP_X_REQUESTED_WITH'] ) =='xmlhttprequest') {
  • //If AJAX Request Then
  • } else{
  • //something else
  • }
  • ?>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-354604-1-1.html 上篇帖子: 分析PHP中的缓存技术 下篇帖子: 常见的PHP开发框架
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表