php 判断中英文字符
编码表
双字节字符编码范围
1. gbk (gb2312/gb18030)
x00-xff gbk双字节编码范围
x20-x7f ascii
xa1-xff 中文 gb2312
x80-xff 中文 gbk
2. utf-8 (unicode)
u4e00-u9fa5 (中文)
x3130-x318f (韩文
xac00-xd7a3 (韩文)
u0800-u4e00 (日文)
<?
$str = "中国";
echo $str;
echo "<hr>";//if (preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/", $str)) { //只能在gb2312情况下使用
if (preg_match("/^[x7f-xff]+$/", $str)) { //兼容gb2312,utf-8
echo "正确输入";
} else {
echo "错误输入";
}
?>中文判断问题,其实有很多学问,底层的内部编码,涉及utf-8,gbk,gb13800的各种不同。曾经研究过如何区分一个字符是什么字符的问题。关联细节太多。
1、使用myisam而不是innodb
mysql教程有很多数据库教程引擎,但是你最可能碰到的就是myisam和innodb。
mysql默认使用的是myisam。但是,很多情况下这都是一个很糟糕的选择,除非你在创建一个非常简单抑或实验性的数据库。外键约束或者事务处理对于数据完整性是非常重要的,但myisam都不支持这些。另外,当有一条记录在插入或者更新时,整个数据表都被锁定了,当使用量增加的时候这会产生非常差的运行效率。
结论很简单:使用innodb。
2、使用php教程的mysql函数
php自产生之日就提供了mysql库函数(or near as makes no difference)。很多应用仍然在使用类似mysql_connect、mysql_query、mysql_fetch_assoc等的函数,尽管php手册上说:
如果你在使用mysql v4.1.3或者更新版本,强烈推荐使用您使用mysqli扩展。
mysqli(mysql的加强版扩展)有以下几个优点:
可选的面向对象接口
prepared表达式,这有利于阻止sql注入攻击,还能提高性能
支持更多的表达式和事务处理
另外,如果你想支持多种数据库系统,你还可以考虑pdo。
3、没有处理用户输入
这或者可以这样说#1:永远不要相信用户的输入。用服务器端的php验证每个字符串,不要寄希望与网页特效。最简单的sql注入攻击会利用如下的代码:
view sourceprint?1 $username = $_post["name"];
2 $password = $_post["password"];
3 $sql = "select userid from usertable where username='$username' and password='$password';";
4 // run query...
只要在username字段输入“admin';--”,这样就会被黑到,相应的sql语句如下:
view sourceprint?1 select userid from usertable where username='admin';
狡猾的黑客可以以admin登录,他们不需要知道密码,因为密码段被注释掉了。
4、没有使用utf-8
美国、英国和澳大利亚的我们很少考虑除英语之外的其他语言。我们很得意地完成了自己的“杰作”却发现它们并不能在其他地方正常运行。
utf-8解决了很多国际化问题。虽然在php v6.0之前它还不能很好地被支持,但这并不影响你把mysql字符集设为utf-8。
5、相对于sql,偏爱php
如果你接触mysql不久,那么你会偏向于使用你已经掌握的语言来解决问题,这样会导致写出一些冗余、低效率的代码。比如,你不会使用mysql自带的avg()函数,却会先对记录集中的值求和然后用php循环来计算平均值。
此外,请注意php循环中的sql查询。通常来说,执行一个查询比在结果中迭代更有效率。
所以,在分析数据的时候请利用数据库系统的优势,懂一些sql的知识将大有裨益。
6、没有优化数据库查询
99%的php性能问题都是由数据库引起的,仅仅一个糟糕的sql查询就能让你的web应用彻底瘫痪。mysql的explain statement、query profiler,还有很多其他的工具将会帮助你找出这些万恶的select。
7、不能正确使用数据类型
mysql提供了诸如numeric、string和date等的数据类型。如果你想存储一个时间,那么使用date或者datetime类型。如果这个时候用integer或者string类型的话,那么将会使得sql查询非常复杂,前提是你能使用integer或者string来定义那个类型。
很多人倾向于擅自自定义一些数据的格式,比如,使用string来存储序列化的php对象。这样的话数据库管理起来可能会变得简单些,但会使得mysql成为一个糟糕的数据存储而且之后很可能会引起故障。
8、在查询中使用*
永远不要使用*来返回一个数据表所有列的数据。这是懒惰:你应该提取你需要的数据。就算你需要所有字段,你的数据表也不可避免的会产生变化。
9、不使用索引或者过度使用索引
一般性原则是这样的:select语句中的任何一个where子句表示的字段都应该使用索引。
举个例子,假设我们有一个user表,包括numeric id(主键)和email address。登录的时候,mysql必须以一个email为依据查找正确的id。如果使用了索引的话(这里指email),那么mysql就能够使用更快的搜索算法来定位email,甚至可以说是即时实现。否则,mysql就只能顺序地检查每一条记录直到找到正确的email address。
有的人会在每个字段上都添加索引,遗憾的是,执行了insert或者update之后这些索引都需要重新生成,这样就会影响性能。所以,只在需要的时候添加索引。
10、忘记备份!
虽然比较罕见,但是数据库还是有崩溃的危险。硬盘有可能损坏,服务器有可能崩溃,web主机提供商有可能会破产!丢失mysql数据将会是灾难性的,所以请确保你已经使用了自动备份或者已经复制到位。
11、bonus mistake-不考虑使用其他数据库
对于php开发人员来说,mysql可能是使用最广泛的数据库系统,但并不是唯一的选择。postgresql和firebird是最强有力的竞争者:这个两者都是开源的,而且都没有被公司收购。微软提供了sql server express,甲骨文提供了10g express,这两者都是企业级数据库的免费版本。有时候,对于一个较小的web应用或者嵌入式应用,sqlite也不失为一个可行的替代方案
这里我们可以修改它的登录模式为http。这样,只要浏览器不关闭就可以继续使用。
以ubuntu环境,通过apt-get方式安装的php教程myadmin为例。
文档位置在 /etc/phpmyadmin/config.inc.php
如下修改文档:
代码如下:
if (!empty($dbname)) {
/* authentication type */
// $cfg['servers'][$i]['auth_type'] = 'cookie';
//重新设定登录模式
$cfg['servers'][$i]['auth_type'] = 'http';
ps教程:其实网上很多地方都有提到,改为http模式就可以了,但为什么我一直没成功呢?因为 phpmyadmin 有3个config.inc.php文档,而我一直以来都只是修改了phpmyadmin文件夹下的文档。正确的文档在/etc/phpmyadmin/config.inc.php
看到taobao api挺有意思的,顺便学习php教程
http://open.taobao.com/
看了下api的调用方式,就是拼装url然后发送http请求,与服务器进行交互
具体原理看这里:http://open.taobao.com/dev/index.php/快速上手指南
看看官方demo,分使用与不使用sdk两种,本人不喜欢sdk,看不到后台实现的机制
看一下php不使用sdk的代码:http://open.taobao.com/dev/index.php/php%e8%b0%83%e7%94%a8%e7%a4%ba%e4%be%8b%e4%bb%a3%e7%a0%81
util.php
里面有两个函数,一个生成md5签名的,一个组装url的
然后根据参数调用这两个函数,发送http请求,处理返回结果
原理大概弄懂了,复制粘贴运行一下吧
粘好代码,运行。。。http 500错误。。。
这可为难了,我php也是初学啊,硬着头皮找错误吧
1. util.php中两个函数的这句:if ($key != ' ' && $val != ' ') 少了其中的引号
2. 主文件这句注释://沙箱环境调用地址 前面的空格有问题,删掉就可以了
。。。这官方demo也太搞笑了吧
终于能运行了,返回一堆乱七八糟的东西,跟api工具返回的完全不一样啊
http://my.open.taobao.com/apitools/apitools.htm
程序中添加时间的初始化语句:“date_default_timezone_set("asia/shanghai");
定义和用法
the date_default_timezone_set() function sets the default timezone used by all date/time functions.
date_default_timezone_set()函数的作用是:设定用于一个脚本中所有日期时间函数的默认时区。
syntax
语法
date_default_timezone_set(timezone) |
parameter 参数 |
description 描述 |
---|---|
timezone | required. the timezone identifier, like "utc" or "europe/paris". list of valid timezones: http://www.php教程.net/manual/en/timezones.php 必要参数,时区确认器,如“utc”或“europe/paris”。下面列出了有效的时区:http://www.php.net/manual/en/timezones.php |
tips教程 and notes
注意点
note: this function always returns true (even if the timezone parameter isn't valid).
注意:这个函数总是返回true(即使时区参数无效的情况下)。
example
案例
<?phpecho(date_default_timezone_set("europe/paris"));?> |
the output of the code above will be:
上述代码将输出下面的结果:
相关文章
- 本篇文章主要分享了通过window.navigator来判断浏览器及其版本信息的实例代码。具有一定的参考价值,下面跟着小编一起来看下吧...2017-01-23
- 今天在写一个vbs的时候,发现中文乱码,后来写好代码正常运行的代码压缩一下给了同事,发现报无效字符,经过验证后发现原来是编码的问题导致,这里就为大家分享一下...2020-06-30
- 使用 conditional comment 来判断 IE 的版本。嗯,是早早有人提出,但没有认真看代码。昨天刚好在看 CSS3 PIE 的时候看到,觉得是不是不靠谱。今天看到 Paul Irish 也提起,那么,推荐一下吧。这是作者博客上写的:复制代码 代码...2014-05-31
- 下面小编就为大家分享一篇c# 判断是否为空然后赋值的4种实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-25
- 文章介绍一个实用的函数,我们如果用php substr来截取字符在中文上处理的很有问题,今天自己写了一个比较好的中文与英文字符截取的函数,有需要的朋友可以参考下。 ...2016-11-25
- 具体详情请看下文小编给大家带来的知识点。同编写程序类似,存储过程中也有对应的条件判断,功能类似于if、switch。在MySql里面对应的是IF和CASE1、IF判断IF判断的格式是这样的:IF expression THEN commands [ELSEIF ex...2015-10-21
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
废话不多说了,直接给大家贴代码了。<?php class test{} $a1 = null; $a2 = ""; //$a3 = $a4 = 0; $a5 = '0'; $a6 = false; $a7 = array(); //var $a8; $a9 = new test(); for ($i=1; $i <=9 ; $i++) {...2015-11-24- 这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
- 这篇文章主要介绍了C#判断一个字符串是否是数字或者含有某个数字的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 今天小编大家分享一篇C#获得程序的根目录以及判断文件是否存在的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-25
从PHP $_SERVER相关参数判断是否支持Rewrite模块
如果是http://www.jb51.net/p1141.html形式的URL,可通过$_SERVER['REQUEST_URI']和$_SERVER['QUERY_STRING']值的区别来分析,最主要是如果页面是通过重定向会产生$_SERVER['REDIRECT_QUERY_STRING']和$_SERVER['REDIREC...2013-10-04- 这篇文章主要给大家介绍了关于toString.call()通用的判断数据类型方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-29
- 整体思路是这样的:判断div内部是否为空,如果为空,给出无数据提示;否则显示正常页面,下面给大家分享js判断div内容是否为空的方法,对判断div内容是否为空的相关知识感兴趣的朋友一起学习吧...2016-02-01
- C# 去除首尾字符或字符串的方法,需要的朋友可以参考一下...2020-06-25
- 正则表达式的作用用来描述字符串的特征。本文重点给大家介绍C# 中使用正则表达式匹配字符的含义,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧...2020-06-25
- js 检测判断fckeditor是否为空 <!-- 用一般的js是不可能获取 fck 编辑器内容的是否有值的,我们得用 FCKeditorAPI接口来实例--> <!DOCTYPE html PUBLIC "-//W3C//DTD...2016-09-20
- 这篇文章主要介绍了Lua判断变量是否为数字、字符串是否可以转换为数字等,本文讲解了Lua 判断是字符还是数字的方法、Lua判断数字的方法、判断可否转换为数字的方法、判断并且准备一个初值的方法,需要的朋友可以参考下...2020-06-30
- js判断手机或者PC的例子我们在几乎所有网站都会有这段代码了,现在手机流量与pc差不多了,下面来看两段js判断手机或者PC例子吧...2015-12-17
- javascript代码判断按钮是否被点击了在项目中经常会遇到这个需求,今天小编抽点时间给大家分享一段代码关于javascript判断按钮是否被点击的方法,感兴趣的朋友一起学习吧...2015-12-14
- 这篇文章主要介绍了C#判断某程序是否运行的方法,代码结构简单功能实用,需要的朋友可以参考下...2020-06-25