分类 前端 下的文章

少量中文通过GET方式传参,到了PHP端解码出现乱码或内容丢失。
原因及解决办法

url参数会对 编码字串内的 + 号解释为空格,所以在 decode 之前做一下逆操作就可以解决。

$str_b64 = $_GET["msg"]; //base64编码的字符串
$str_b64 = str_replace(" ","+",$str_b64);
$str_raw = base64_decode($str_b64); //解码

最近摸索前端canvas画布和后端图像加工相关的一些功能。写了个练手程序,为了让前端(js控制css)预览的体验与后端php图像处理一致。总结了几点经验。

先上成品,表情包生成器:
https://gen8.orz.com.cn/mymeme
QQ截图20191227142153.png

img11.jpg

*此文并非系统且科普的教学,讲述的内容基于我个人备忘比较跳跃和零散。

目标:

  1. 用户上传模板图
  2. 在图上画出一个录入文字的涂鸦区域(定义尺寸、位置、文字大小、角度),并可以预览效果
  3. 保存成方案,之后可以打开与分享这个方案。把输入的文字(段子)合成到图片上
  4. 根据涂鸦区域的大小与文字的多与少,一定范围内自动调节文字的大小(未做更换字体、颜色)

这几个目标遇到问题较多的是预览前端的涂鸦区预览 与 后端生成图片的一致性。



- 阅读剩余部分 -

之前备忘了php 的,也把js的写一下吧,懒得费脑子写连记住都觉得浪费能源。

//验证手机号合法性
function valid_phone(phone){
    var flag = false;
    var myreg = /^(1[3-9]{1}[0-9]{9})$/;
    if (phone == '') {
        console.log("手机号码不能为空");
        //errmsg = "手机号码不能为空!";
    } else if (phone.length != 11) {
        console.log("请输入11位手机号码!");
        //errmsg = "请输入11位手机号码!";
    } else if (!myreg.test(phone)) {
        console.log("请输入有效的手机号码!");
        //errmsg = "请输入有效的手机号码!";
    } else {
        flag = true;
    }
    return flag;
}

errmsg 和 console.log 输出都是没用的,只是以防需要额外的交互。

1. 去除safari表单自带样式(针对ios)

/*去除safari样式*/
input, button, select ,textarea {  -webkit-appearance:none;  } 

2. 消除(chrome) 选中表单组件时的 高亮框

/*去掉选中input的高亮框*/
input:focus, button:focus {outline: none;}
input::-ms-clear {display: none;} /*兼容IE*/