hongweipeng 发布的文章

form中好用却不常见的 accept-charset 属性


起步

我们曾用过不同的编码来做过页面UTF-8GB2312GBk,而很多时候,又和服务端的编码不一致,如果不进行特殊处理,就会出现乱码。我们可能无法控制接收方的编码问题,这时accept-charset就能提供很好的解决方案。

解决

假如服务端使用的utf-8的编码方式.

<form method="post" action="..." accept-charset="utf-8"> 
    <!-- code... --> 
</form>

剩下的工作交给浏览器搞定了。


网站添加支付宝捐款功能


起步

在浏览一些开源项目网站时看到有捐赠页面,也想自己的开源页面能不能也加个,毕竟为开源事业做贡献也是不容易。

zfb-btn-index.png

提交表单方式捐赠

看其他网页的前端代码,就能发现有个隐藏的表单。

<form action="https://shenghuo.alipay.com/send/payment/fill.htm" method="post" target="_blank" accept-charset="gbk">
    <input name="optEmail" type="hidden" value="你的支付宝账户" />
    <input name="payAmount" type="hidden" value="10" />
    <input name="memo" type="hidden" value="留下您的联系方式" />
    <input name="pay" type="image" value="转账" src="https://img.alipay.com/sys/personalprod/style/mc/btn-index.png" />
</form>

这种方式测了一下,需要再确认收款人的信息,并不方便,推荐用第二种方式


验证密码是否合法


起步

有这样一个需要保证密码有数字,有字母(可小写可大写),不能包含标点,长度在6~20个字符。简单的说就是验证字符串是不是一段长6~20只包含数字和字母

遍历验证?

用字符串遍历对这些需求逐一验证自然是可以的,想起正则貌似有(?=pattern)正向预测先行,对于懒惰的程序员当然应该来用一下,逐一验证步骤多。

编写

有了这个思路,这个需求竟然一句正则就搞定了。再次惊艳正则的强大。


PHP 5.3、5.4、5.5、5.6 中的新特性


文章转载:http://segmentfault.com/a/1190000002790818

PHP 5.6

1、可以使用表达式定义常量

https://php.net/manual/zh/migration56.new-features.php

在之前的 PHP 版本中,必须使用静态值来定义常量,声明属性以及指定函数参数默认值。 现在你可以使用包括数值、字符串字面量以及其他常量在内的数值表达式来 定义常量、声明属性以及设置函数参数默认值。

<?php
const ONE = 1;
const TWO = ONE * 2;    //定义常量时允许使用之前定义的常量进行计算

class C {
    const THREE = TWO + 1;
    const ONE_THIRD = ONE / self::THREE;
    const SENTENCE = 'The value of THREE is '.self::THREE;

    public function f($a = ONE + self::THREE) { //允许常量作为函数参数默认值
        return $a;
    }
}

echo (new C)->f()."\n";
echo C::SENTENCE;
?>

可以通过 const 关键字来定义类型为 array 的常量。

<?php
const ARR = ['a', 'b'];
echo ARR[0];
?>