Category未分类

PHP explode 分割空字符串

今天开发的时候偶然间遇到一个神奇的情况,当用explode分割一个空字符串的时候有可能会得到一个array(0=>”)这样的数组,对于处理后的数据使用起来非常的不方便,所以记录下,在explode之前先判断被分割的字符串是否为空

在程序员的眼里,用户是这样使用他们开发的软件的

看到一篇有趣的文章,转过来

 

我曾经说过,程序员不是一般的人,是具有某种超能里的人。但问题是,程序员往往意识不到 自己的这种特异功能,在他们的眼里,会认为自己很普通,跟常人一样,所以,程序员能做到的事情,其他人——比如他们的客户/软件用户——也应该很容易做 到。但事实上,由于大部分人——绝大部分人(包括软件开发公司的客户/购买软件的用户)——都是电脑小白(对电脑知识/计算机知识/软件知识知之甚少的 人)。一个对于程序员来说很显而易见的软件操作,换成让用户来操作,就会出现各种各样奇怪的事情。这让程序员非常痛苦。

记得有一次,一个客户打电话给我,说他电脑桌面上的大e找不到了,我没听懂,什么大e找不到了?客户解释说:就是那个长的像大个儿的英文字母e的图标找不到了。我倒。终于明白了他指的是桌面上的IE浏览器的图标不见了。

还有一次,有个客户提出一个需求,要求在页面上增加一个搜索功能,我问它,系统里有搜索功能,为什么还要在这个地方新增一个搜索功能,他说他要的不是那个 搜索,他要的是在这个页面上搜在某个关键词。经过进一步的沟通,我明白了,他要的是浏览器上的快捷键CTRL+F的功能。

因为用户的这些特征,导致了程序员认为完美的程序,到了客户的手里,却变成极其难用的软件,投诉电话如乡下骂街的泼妇似的响个不停。而事后分析发现,根本 原因都是应为程序员高估了用户对软件的掌控能力,低估了自己对软件的创造能力,于是导致了他们看这些客户使用他们开发的软件时,都是那样一种可笑的行为, 如下图:

在程序员的眼里,用户是这样使用他们开发的软件的

如果是脾气暴躁的程序员,遇到这种情况,难免会对着客户发一顿牢骚,而且,程序员的脾气一般都不是很好,所以,通常跟客户沟通时,项目经理一般都是跟着一起,以免事态激化。

用户虽然给程序员带来很多麻烦,但其实程序员的所有荣耀感都来自客户,因为只有客户用得满意,程序员才会有成就感。比如像下面这几个客户在使用一个新款软件时显露出来的表情,足够让一个处在北京重度雾霾的下午的程序员也能露出笑容:


用户在使用一款新软件时的样子

程序员虽然脾气不好,但他们都是为工作着想,不带任何个人恩怨。当开发软件有紧急任务 时,他们都是任劳任怨的加班加点,当在已经发布的软件中出现了重大bug时,他们都会深深在自责,会连夜赶制出紧急修复bug,如果不能在第一时间让用户 满意,他们会茶不思、饭不想、觉不睡。即使在实在没有短期内完整的补救措施的情况下,他们也会想出一些歪招,但也是行之有效的方案,让用户暂时度过难关。 比如,下面就是一个紧急修复补丁:


紧急修复补丁

用户应该体谅程序员。程序员的生活实际处在一种十分矛盾的状态中。编程不像其它行业,比 如泥瓦匠砌砖,砌一层砖,墙就会高一次。但编程不一样,有时候一个程序员写了一天的代码,急得满头大汗,但开发进度未必就有所进展,有时候甚至还会倒退。 软件编程是一个亦虚亦实的世界,有时候你搞不清一段代码为什么好用,有时候也会诧异由那样的代码构成的软件也能跑起来,正如下面这张图片中所示:


软件中有鬼

最后,说一下跟程序员打交道的一些注意事项。程序员因为整天和编程逻辑打交道,所以对因 果关系特别敏感。如果你的话语的因果关系不是很明确,这会让他们感到疑惑,如果你的话语的因果关系不完整,这会让他们办错事。如果你的话中有if,最好后 面用then做结束,或者用else给出选择,主语要明晰。如果不明晰,就会出现下图中出现的事故:


程序员是这样理解这个指示牌上的话的

如果你是一个程序员,你会理解我说的话。

js判断用户设备

从腾讯新闻站的页面源码上的找到的一段判断用户设备的js代码,主要思路还是根据用户的userAgent中的关键词来匹配判断用户当前的设备是什么。

[code type=javascript]
if(!/Android|webOS|iPhone|Windows Phone|iPod|BlackBerry|SymbianOS/i.test(navigator.userAgent)){
window.location.href = ‘xxxx.ccc’;
}
[/code]

按需食用,可自行根据需要修改匹配字段中的关键字来取舍平台,比如自己的网站出了款ios的app,暂时没有安卓的,那么就可以把规则中的除‘iPhone|iPad|iPod’之外的设备关键词全都去掉,然后将if判断中的代码替换成加载展示某个浮动层提示用户可下载IOS的App。

另外推荐一个js库“https://github.com/matthewhudson/device.js”

Device.js 通过操作系统(比如 iOS,安卓,黑莓,Windows,Firefox OX),方向(横屏或者竖屏),类型(平板或者移动设备),比如在 iPhone 上的浏览的时候在添加的 CSS Class为‘ios iphone mobile’,前端开发者可以根据这些顶层class的不同针对不同的系统写出各自适配的样式。

JS +PHP验证电话号码

JS代码需要:jquery
[code type=javascript]
//验证手机号码或者电话号码
function checkContactNumber() {
$(“#error”).css(“display”, “none”);
var mobile = $.trim($(“#ContactNumber”).val());
var isMobile = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})|(17[0-9]{1})|(14[0-9]{1}))+\d{8})$/;
var isPhone = /^(?:(?:0\d{2,3})-)?(?:\d{7,8})(-(?:\d{3,}))?$/;;
var error = ““;
//如果为1开头则验证手机号码
if (mobile.substring(0, 1) == 1) {
if (!isMobile.exec(mobile) && mobile.length != 11) {
$(“#ContactNumber”).after(error);
$(“#ContactNumber”).focus();
return false;
}
}
//如果为0开头则验证固定电话号码
else if (mobile.substring(0, 1) == 0) {
if (!isPhone.test(mobile)) {
$(“#ContactNumber”).after(error);
$(“#ContactNumber”).focus();
return false;
}
}
//否则全部不通过
else {
$(“#ContactNumber”).after(error);
$(“#ContactNumber”).focus();
return false;
}
return true;
}
[/code]

PHP判断方法
[code type=php]
public function checkMobile($str)
{
$pattern = “/^(13|14|15|18)\d{9}$/”;
if (preg_match($pattern,$str))
{
return true;
}
else
{
return false;
}
}
[/code]

关于js性能优化

近期的一个项目,自助游分类页改造,外加接入国际散客票。

 

原本计划两个人1周多时间左右完成,但开始后但开始开发后才发现一个巨坑,该页面的js有3700+行之多

 

再三讨论之后,决定需要重构这部分的代码(因为新页面改造后页面代码、交互逻辑已经发生了翻天覆地的变化)。动手之前关注了下js优化的部分,故在此写记下(内容来源于网络) Continue reading

© 2018 CheungQ

Theme by Anders NorénUp ↑