php生成二维码实现代码
php类库PHP QR Code
# 两句话解释:
# 包含qrlib.php的话需要同其它文件放到一起:文件、文件夹。
# phpqrcode.php是合并后版本,只需要包含这个文件,但生成的图片速度慢而且不太准确
# 以下给出两种用法:
代码如下 | 复制代码 |
<?php ?> |
如果生成有色彩的需要自己动手
修改phpqrcode.php中QRimage类的image方法中颜色设置部分的代码,1.1.4版本的代码在第987、988行,一个前景色,一个背景色:
代码如下 | 复制代码 |
$col[0] = ImageColorAllocate($base_image,255,255,255); $col[1] = ImageColorAllocate($base_image,0,0,0); |
即可
利用 google开放api生成
代码如下 | 复制代码 |
$urlToEncode="http://gz.altmi.com"; |
两种方法简单说明如下:
一, 利用PHP的输出控制函数(Output Control)得到静态页面字符串,再写入到新的文件中。
使用说明:
1、实例化
代码如下 | 复制代码 |
$cache = new Cache();2、设置缓存时间和缓存目录 $cache = new Cache(60, '/any_other_path/'); |
第一个参数是缓存秒数,第二个参数是缓存路径,根据需要配置。
默认情况下,缓存时间是 3600 秒,缓存目录是 cache/
3、读取缓存
代码如下 | 复制代码 |
$value = $cache->get('data_key');4、写入缓存 $value = $cache->put('data_key', 'data_value');完整实例: $cache = new Cache(); //从缓存从读取键值 $key 的数据 //如果没有缓存数据 <?php //cache constructor, optional expiring time and cache path //returns the filename for the cache //creates new cache files with the given data, $key== name of the cache, data the info/values to store //returns cache for the given key |
二, 利用模板生成
什么是模板?如果大家使用过Dreamwerver中的“另存为模板”就应该知道模板是用来统一风格的东西。它只让你修改页面的某一部分,当然这“某一部分”是由你来确定的。本文在这说的模板也就是这个意思。(此外,PHP模板技术还包括phplib、smarty等等,这不是本文所说内容了)
把模板的概念结合本文再说得具体一点就是:美工先做好一个页面,然后我们把这个页面当作模板(要注意的是这个模板就没必要使用EditRegion3这样的代码了,这种代码是Dreamwerver为了方便自己设计而弄的标识),把这个模板中我们需要改变的地方用一个与HTML可以区分的字符代替,如“{title}”、“[title]”。在生成静态页面的时候只需要把数据和这些字符串替换即可。这就是模板的含义了。
步骤:
1.新建一个php页面和一个html页面[模板页];注:如果是从数据库调用数据,则将数据以数组的形式保存,然后循环生成;
2.在php页面,打开html页面->读取html页面的内容->替换参数->新建(打开)一个新的html页面->将替换的内容写入新文件中->关闭新文件->生成成功;
代码如下 | 复制代码 |
$open = fopen("template.htm","r"); //打开模板文件 $newtemp = fopen("1.htm","w");//生成,用写入方式打开一个不存在(新)的页面 |
php批量生成html测试:
代码如下 | 复制代码 |
//假设从数据库中调的数据存放在二维数组$arr中 foreach($arr as $key=>$value){ $content = str_replace("{title}",$title,$handle);//替换 $newtemp = fopen($path,"w");//用写入方式打开一个不存在(新)的页面 |
HTTP 头:
Connection Keep-Alive
Date Sun, 06 May 2012 18:00:36 GMT
Last-Modified Sun, 06 May 2012 17:31:02 GMT
Etag ec1f629013925ab0fa4389ba926e8c06
Keep-Alive timeout=15, max=299
Server Apache/2.2.16 (Unix) DAV/2
Vary Accept-Encoding
请注意其中的这两行,描述了页面的缓存信息:
Last-Modified Sun, 06 May 2012 17:31:02 GMT
Etag ec1f629013925ab0fa4389ba926e8c06这个情况下,如果服务器响应 304 状态码,浏览器会自觉地从缓存中读取数据;如果响应 200 状态码,不管有没有客户端缓存,照样从服务端读取。
按照这个理论支撑,比如站长军团大部分查询结果都是 ajax 异步获取的,二次访问就都可以通过这种方式进行缓存改造。只要客户端有缓存,就向客户端发送一个 304 响应状态码,然后退出程序执行。
浏览器发出的请求中包含 If-Modified-Since 和 If-None-Match 两个参数:
If-Modified-Since 表示询问数据的最后修改时间是否是某个时间值。然后服务器会检查数据的最后修改时间,如果是该时间则返回 304 状态码,客户端接收到该状态码后直接从本地读取缓存。这种情况有一个前置条件,即本地必须存在缓存资源,浏览器才会发送 If-Modified-Since 参数,并且值为上一次服务器返回的 Last-Modified 值。
If-None-Match 类似,它由服务器返回的 Etag 值生成,仅仅用于服务器检查数据的修改时间,可以是任意值。考虑到 If-Modified-Since 结合 Last-Modified 的方法并不被所有服务器支持,这里就只考虑使用 etag 的实现。
PHP 中通过 $_SERVER['HTTP_IF_NONE_MATCH'] 可以判断文件是否被浏览器缓存,代码片段如下:
//使用 etag 标记控制缓存
代码如下 | 复制代码 |
$etag = md5(date('Ymd')); if ($_SERVER['HTTP_IF_NONE_MATCH'] == $etag) { header('Etag:' . $etag, true, 304); exit(); } else { header('Etag:' . $etag); |
}这里我使用当日日期来生成 etag,这样可以保证缓存最多生效一天时间,这个参数可以根据需要修改。
补充说明:
即便是 304 响应,实际上还是会请求服务端,因为需要建立连接来判断是否需要传输数据,304 缓存节约的是静态资源传输的开销;
另一种缓存是 200 响应时的缓存,不建立连接但请求会响应 200 状态码,并从本地直接读取缓存。
代码如下 | 复制代码 |
#!/bin/sh "show slave statusG" | grep -i "running") |
php实例代码
代码如下 | 复制代码 |
check_rep.php <!--?php<br /-->if(empty($_REQUEST["key"])) die(':) missing key'); include("mysql_instance.php"); define("USERNAME", "用户名"); $instances = get_instances(); if($instances){ <!-- 30分钟自动刷新 --> END; n"; n"; ["Last_IO_Errno"] . ")"; ["Last_SQL_Errno"] . ")"; n"; n"; END; <!--?php<br /-->/* <!--?php array(); |
将以上三个PHP文件放在虚拟目录中,然后通过URL访问。
访问方式:http://ip/check_repl.php?key=xupeng
代码如下 | 复制代码 |
<?php class GetPingYing { private $pylist = array( 'a'=>-20319, 'ai'=>-20317, 'an'=>-20304, 'ang'=>-20295, 'ao'=>-20292, 'ba'=>-20283, 'bai'=>-20265, 'ban'=>-20257, 'bang'=>-20242, 'bao'=>-20230, 'bei'=>-20051, 'ben'=>-20036, 'beng'=>-20032, 'bi'=>-20026, 'bian'=>-20002, 'biao'=>-19990, 'bie'=>-19986, 'bin'=>-19982, 'bing'=>-19976, 'bo'=>-19805, 'bu'=>-19784, 'ca'=>-19775, 'cai'=>-19774, 'can'=>-19763, 'cang'=>-19756, 'cao'=>-19751, 'ce'=>-19746, 'ceng'=>-19741, 'cha'=>-19739, 'chai'=>-19728, 'chan'=>-19725, 'chang'=>-19715, 'chao'=>-19540, 'che'=>-19531, 'chen'=>-19525, 'cheng'=>-19515, 'chi'=>-19500, 'chong'=>-19484, 'chou'=>-19479, 'chu'=>-19467, 'chuai'=>-19289, 'chuan'=>-19288, 'chuang'=>-19281, 'chui'=>-19275, 'chun'=>-19270, 'chuo'=>-19263, 'ci'=>-19261, 'cong'=>-19249, 'cou'=>-19243, 'cu'=>-19242, 'cuan'=>-19238, 'cui'=>-19235, 'cun'=>-19227, 'cuo'=>-19224, 'da'=>-19218, 'dai'=>-19212, 'dan'=>-19038, 'dang'=>-19023, 'dao'=>-19018, 'de'=>-19006, 'deng'=>-19003, 'di'=>-18996, 'dian'=>-18977, 'diao'=>-18961, 'die'=>-18952, 'ding'=>-18783, 'diu'=>-18774, 'dong'=>-18773, 'dou'=>-18763, 'du'=>-18756, 'duan'=>-18741, 'dui'=>-18735, 'dun'=>-18731, 'duo'=>-18722, 'e'=>-18710, 'en'=>-18697, 'er'=>-18696, 'fa'=>-18526, 'fan'=>-18518, 'fang'=>-18501, 'fei'=>-18490, 'fen'=>-18478, 'feng'=>-18463, 'fo'=>-18448, 'fou'=>-18447, 'fu'=>-18446, 'ga'=>-18239, 'gai'=>-18237, 'gan'=>-18231, 'gang'=>-18220, 'gao'=>-18211, 'ge'=>-18201, 'gei'=>-18184, 'gen'=>-18183, 'geng'=>-18181, 'gong'=>-18012, 'gou'=>-17997, 'gu'=>-17988, 'gua'=>-17970, 'guai'=>-17964, 'guan'=>-17961, 'guang'=>-17950, 'gui'=>-17947, 'gun'=>-17931, 'guo'=>-17928, 'ha'=>-17922, 'hai'=>-17759, 'han'=>-17752, 'hang'=>-17733, 'hao'=>-17730, 'he'=>-17721, 'hei'=>-17703, 'hen'=>-17701, 'heng'=>-17697, 'hong'=>-17692, 'hou'=>-17683, 'hu'=>-17676, 'hua'=>-17496, 'huai'=>-17487, 'huan'=>-17482, 'huang'=>-17468, 'hui'=>-17454, 'hun'=>-17433, 'huo'=>-17427, 'ji'=>-17417, 'jia'=>-17202, 'jian'=>-17185, 'jiang'=>-16983, 'jiao'=>-16970, 'jie'=>-16942, 'jin'=>-16915, 'jing'=>-16733, 'jiong'=>-16708, 'jiu'=>-16706, 'ju'=>-16689, 'juan'=>-16664, 'jue'=>-16657, 'jun'=>-16647, 'ka'=>-16474, 'kai'=>-16470, 'kan'=>-16465, 'kang'=>-16459, 'kao'=>-16452, 'ke'=>-16448, 'ken'=>-16433, 'keng'=>-16429, 'kong'=>-16427, 'kou'=>-16423, 'ku'=>-16419, 'kua'=>-16412, 'kuai'=>-16407, 'kuan'=>-16403, 'kuang'=>-16401, 'kui'=>-16393, 'kun'=>-16220, 'kuo'=>-16216, 'la'=>-16212, 'lai'=>-16205, 'lan'=>-16202, 'lang'=>-16187, 'lao'=>-16180, 'le'=>-16171, 'lei'=>-16169, 'leng'=>-16158, 'li'=>-16155, 'lia'=>-15959, 'lian'=>-15958, 'liang'=>-15944, 'liao'=>-15933, 'lie'=>-15920, 'lin'=>-15915, 'ling'=>-15903, 'liu'=>-15889, 'long'=>-15878, 'lou'=>-15707, 'lu'=>-15701, 'lv'=>-15681, 'luan'=>-15667, 'lue'=>-15661, 'lun'=>-15659, 'luo'=>-15652, 'ma'=>-15640, 'mai'=>-15631, 'man'=>-15625, 'mang'=>-15454, 'mao'=>-15448, 'me'=>-15436, 'mei'=>-15435, 'men'=>-15419, 'meng'=>-15416, 'mi'=>-15408, 'mian'=>-15394, 'miao'=>-15385, 'mie'=>-15377, 'min'=>-15375, 'ming'=>-15369, 'miu'=>-15363, 'mo'=>-15362, 'mou'=>-15183, 'mu'=>-15180, 'na'=>-15165, 'nai'=>-15158, 'nan'=>-15153, 'nang'=>-15150, 'nao'=>-15149, 'ne'=>-15144, 'nei'=>-15143, 'nen'=>-15141, 'neng'=>-15140, 'ni'=>-15139, 'nian'=>-15128, 'niang'=>-15121, 'niao'=>-15119, 'nie'=>-15117, 'nin'=>-15110, 'ning'=>-15109, 'niu'=>-14941, 'nong'=>-14937, 'nu'=>-14933, 'nv'=>-14930, 'nuan'=>-14929, 'nue'=>-14928, 'nuo'=>-14926, 'o'=>-14922, 'ou'=>-14921, 'pa'=>-14914, 'pai'=>-14908, 'pan'=>-14902, 'pang'=>-14894, 'pao'=>-14889, 'pei'=>-14882, 'pen'=>-14873, 'peng'=>-14871, 'pi'=>-14857, 'pian'=>-14678, 'piao'=>-14674, 'pie'=>-14670, 'pin'=>-14668, 'ping'=>-14663, 'po'=>-14654, 'pu'=>-14645, 'qi'=>-14630, 'qia'=>-14594, 'qian'=>-14429, 'qiang'=>-14407, 'qiao'=>-14399, 'qie'=>-14384, 'qin'=>-14379, 'qing'=>-14368, 'qiong'=>-14355, 'qiu'=>-14353, 'qu'=>-14345, 'quan'=>-14170, 'que'=>-14159, 'qun'=>-14151, 'ran'=>-14149, 'rang'=>-14145, 'rao'=>-14140, 're'=>-14137, 'ren'=>-14135, 'reng'=>-14125, 'ri'=>-14123, 'rong'=>-14122, 'rou'=>-14112, 'ru'=>-14109, 'ruan'=>-14099, 'rui'=>-14097, 'run'=>-14094, 'ruo'=>-14092, 'sa'=>-14090, 'sai'=>-14087, 'san'=>-14083, 'sang'=>-13917, 'sao'=>-13914, 'se'=>-13910, 'sen'=>-13907, 'seng'=>-13906, 'sha'=>-13905, 'shai'=>-13896, 'shan'=>-13894, 'shang'=>-13878, 'shao'=>-13870, 'she'=>-13859, 'shen'=>-13847, 'sheng'=>-13831, 'shi'=>-13658, 'shou'=>-13611, 'shu'=>-13601, 'shua'=>-13406, 'shuai'=>-13404, 'shuan'=>-13400, 'shuang'=>-13398, 'shui'=>-13395, 'shun'=>-13391, 'shuo'=>-13387, 'si'=>-13383, 'song'=>-13367, 'sou'=>-13359, 'su'=>-13356, 'suan'=>-13343, 'sui'=>-13340, 'sun'=>-13329, 'suo'=>-13326, 'ta'=>-13318, 'tai'=>-13147, 'tan'=>-13138, 'tang'=>-13120, 'tao'=>-13107, 'te'=>-13096, 'teng'=>-13095, 'ti'=>-13091, 'tian'=>-13076, 'tiao'=>-13068, 'tie'=>-13063, 'ting'=>-13060, 'tong'=>-12888, 'tou'=>-12875, 'tu'=>-12871, 'tuan'=>-12860, 'tui'=>-12858, 'tun'=>-12852, 'tuo'=>-12849, 'wa'=>-12838, 'wai'=>-12831, 'wan'=>-12829, 'wang'=>-12812, 'wei'=>-12802, 'wen'=>-12607, 'weng'=>-12597, 'wo'=>-12594, 'wu'=>-12585, 'xi'=>-12556, 'xia'=>-12359, 'xian'=>-12346, 'xiang'=>-12320, 'xiao'=>-12300, 'xie'=>-12120, 'xin'=>-12099, 'xing'=>-12089, 'xiong'=>-12074, 'xiu'=>-12067, 'xu'=>-12058, 'xuan'=>-12039, 'xue'=>-11867, 'xun'=>-11861, 'ya'=>-11847, 'yan'=>-11831, 'yang'=>-11798, 'yao'=>-11781, 'ye'=>-11604, 'yi'=>-11589, 'yin'=>-11536, 'ying'=>-11358, 'yo'=>-11340, 'yong'=>-11339, 'you'=>-11324, 'yu'=>-11303, 'yuan'=>-11097, 'yue'=>-11077, 'yun'=>-11067, 'za'=>-11055, 'zai'=>-11052, 'zan'=>-11045, 'zang'=>-11041, 'zao'=>-11038, 'ze'=>-11024, 'zei'=>-11020, 'zen'=>-11019, 'zeng'=>-11018, 'zha'=>-11014, 'zhai'=>-10838, 'zhan'=>-10832, 'zhang'=>-10815, 'zhao'=>-10800, 'zhe'=>-10790, 'zhen'=>-10780, 'zheng'=>-10764, 'zhi'=>-10587, 'zhong'=>-10544, 'zhou'=>-10533, 'zhu'=>-10519, 'zhua'=>-10331, 'zhuai'=>-10329, 'zhuan'=>-10328, 'zhuang'=>-10322, 'zhui'=>-10315, 'zhun'=>-10309, 'zhuo'=>-10307, 'zi'=>-10296, 'zong'=>-10281, 'zou'=>-10274, 'zu'=>-10270, 'zuan'=>-10262, 'zui'=>-10260, 'zun'=>-10256, 'zuo'=>-10254 ); //全部拼音 public function getAllPY($chinese, $delimiter = '', $length = 0) { $py = $this->zh_to_pys($chinese, $delimiter); if($length) { $py = substr($py, 0, $length); } return $py; } //拼音首个字母 public function getFirstPY($chinese){ $result = '' ; for ($i=0; $i<strlen($chinese); $i++) { $p = ord(substr($chinese,$i,1)); if ($p>160) { $q = ord(substr($chinese,++$i,1)); $p = $p*256 + $q - 65536; } $result .= substr($this->zh_to_py($p),0,1); } return $result ; } //-------------------中文转拼音--------------------------------// private function zh_to_py($num, $blank = '') { if($num>0 && $num<160 ) { return chr($num); } elseif ($num<-20319||$num>-10247) { return $blank; } else { foreach ($this->pylist as $py => $code) { if($code > $num) break; $result = $py; } return $result; } } private function zh_to_pys($chinese, $delimiter = ' ', $first=0){ $result = array(); for($i=0; $i<strlen($chinese); $i++) { $p = ord(substr($chinese,$i,1)); if($p>160) { $q = ord(substr($chinese,++$i,1)); $p = $p*256 + $q - 65536; } $result[] = $this->zh_to_py($p); if ($first) { return $result[0]; } } return implode($delimiter, $result); } } //-------------------------中文转拼音结束--------------------------------// //中文是双字节,所以需要两个字节连接起来(ASCII码的范围是在161-255) $c = '齐秦'; for($i=0; $i<strlen($c); $i++) { echo ord($c[$i]).' ';//198 235 199 216 } echo '<br>',chr(198).chr(235).chr(199).chr(216),'<br>'; //测试 $PingYing = new GetPingYing(); echo '<br>',$PingYing->getFirstPY('羽泉乐队,歌不错-推荐'),'<br>';//yqldgbc-tj echo $PingYing->getAllPY('羽泉乐队,歌不错-推荐'),'<br>'; //yuquanleduigebucuo-tuijian ?> |
相关文章
- 最近做了个扫描二维码得到vcard的项目,遇到一个问题,有一部分生成完的二维码,用android系统手机扫描后得到的vcard中的中文姓名是乱码,经过比对发现,这部分vcard中ORG这个...2016-11-25
- 有一种方法,可以不打开网站而直接查看到这个网站的源代码.. 这样可以有效地防止误入恶意网站... 在浏览器地址栏输入: view-source:http://...2016-09-20
- <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
- 本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
- 本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
- 本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
- php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
- php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p> </p> <p> </p> <form name="form1...2016-11-25
- 公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
- 本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
- 其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
- 这篇文章主要介绍了微信小程序 二维码生成工具 weapp-qrcode详解,教大家如何在项目中引入weapp-qrcode.js文件,通过实例代码给大家介绍的非常详细,需要的朋友可以参考下...2021-10-23
- 一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
- 微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
- 本文介绍两种使用 php 生成二维码的方法。 (1)利用google生成二维码的开放接口,代码如下: /** * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】 * @param strin...2015-10-21
- 这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
- 本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
- 这篇文章主要介绍了C#生成随机数功能,涉及C#数学运算与字符串操作相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 小编分享了一段简单的php中文转拼音的实现代码,代码简单易懂,适合初学php的同学参考学习。 代码如下 复制代码 <?phpfunction Pinyin($_String...2017-07-06
- 关于生成唯一数字ID的问题,是不是需要使用rand生成一个随机数,然后去数据库查询是否有这个数呢?感觉这样的话有点费时间,有没有其他方法呢?当然不是,其实有两种方法可以解决。 1. 如果你只用php而不用数据库的话,那时间戳+随...2015-11-24