分类 PHP 下的文章

微信分享接口示例(设置标题、缩略图、连接、描述),附demo下载

  前几天因为项目所需要实现微信分享接口,在网上搜了一大堆,实现办法大致分为两种,第一:在body之后加一个img标签并且设置display:none,这种方法感觉不科学所以我没有测试过。第二:使用微信的分享接口,但在网上也没用找到完整的示例,还是自己折腾吧,请看下面。

第一步:

先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。
注:认证帐号才有分享权限

- 阅读剩余部分 -

php按指定元素值去除数组元素的实现方法

<?php 
    //去除值为"Cat"的元素 
    $a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse"); 
    print_r($a); 
    unset($a[array_search("Cat",$a)]);//array_search("Cat",$a)按元素值返回键名。去除后保持索引 
    print_r($a); 
    
    //或
    $arr = array();
    foreach ($a as $key=>$value){
       if ($value != 'Cat') $arr[] = $value;
    }
    
    var_dump($arr);
    
?> 

显示结果

//去除前: 
Array ( 
    [a] => Dog 
    [b] => Cat 
    [c] => Horse 
) 

//去除后: 
Array ( 
    [a] => Dog 
    [c] => Horse 
)

粘贴上传图片实现

HTML:

<div id="box" style="width:200px;height:200px;border:1px solid;" contenteditable></div>
<script>
    document.querySelector('#box').addEventListener('paste', function(e) {
    // chrome
    if (e.clipboardData && e.clipboardData.items[0].type.indexOf('image') > -1) {
        var that = this,
            reader = new FileReader();
            file = e.clipboardData.items[0].getAsFile();

        reader.onload = function(e) {
            var xhr = new XMLHttpRequest(),
                fd = new FormData();

            xhr.open('POST', '../upload.php', true);
            xhr.onload = function () {
                var img = new Image();
                img.src = xhr.responseText;
                that.appendChild(img);  // 这里是把上传后得到的地址插入到#box里
            }

            fd.append('file', this.result); // this.result得到图片的base64
            xhr.send(fd);
        }
        reader.readAsDataURL(file);
    }
}, false);
</script>

PHP:

<?php
    header("Access-Control-Allow-Origin:*");
    $url = 'http://'.$_SERVER['HTTP_HOST'];
    $file = $_POST["file"];
    $data = base64_decode(str_replace('data:image/png;base64,', '', $file));  //截图得到的只能是png格式图片,所以只要处理png就行了
    $name = md5(time()) . '.png';  // 这里把文件名做了md5处理
    file_put_contents($name, $data);
    echo "$url/$name";
?>

PHP只显示姓名首尾字符,隐藏中间字符并用*替换

//测试时文件的编码方式要是UTF8  
$str='中文a字1符';  
echo strlen($str).'<br>';//14  
echo mb_strlen($str,'utf8').'<br>';//6  
echo mb_strlen($str,'gbk').'<br>';//8  
echo mb_strlen($str,'gb2312').'<br>';//10  
/**
 * 只保留字符串首尾字符,隐藏中间用*代替(两个字符时只显示第一个)
 * @param string $user_name 姓名
 * @return string 格式化后的姓名
 */
function substr_cut($user_name){
    $strlen     = mb_strlen($user_name, 'utf-8');
    $firstStr     = mb_substr($user_name, 0, 1, 'utf-8');
    $lastStr     = mb_substr($user_name, -1, 1, 'utf-8');
    return $strlen == 2 ? $firstStr . str_repeat('*', mb_strlen($user_name, 'utf-8') - 1) : $firstStr . str_repeat("*", $strlen - 2) . $lastStr;
}

Thinkphp where 一个字段多条件查询

一、thinkphp where 一个字段多条件查询

字段为a,下面可查询a=10,a=14的数据:

$where['a'] = array(14,10,'or');

字段为a,b,可查询a=10b=10的数据

$where['a|b'] = array('eq','10');

二、ThinkPHP Where 条件中使用表达式

Where 条件表达式格式为:

$map['字段名'] = array('表达式', '操作条件');
其中 $map 是一个普通的数组变量,可以根据自己需求而命名。上述格式中的表达式实际是运算符的意义:

ThinkPHP运算符 与 SQL运算符 对照表

TP运算符 | SQL运算符 | 例子 | 实际查询条件
----|----|----|----
eq|=|$map['id'] = array('eq',100);|等效于:$map['id'] = 100;
neq|!=|$map['id'] = array('neq',100);|id != 100
gt|>|$map['id'] = array('gt',100);|id > 100
egt|>=|$map['id'] = array('egt',100);|id >= 100
lt|<|$map['id'] = array('lt',100);|id < 100
elt|<=|$map['id'] = array('elt',100);|id <= 100
like|like|$map<'username'> = array('like','Admin%');|username like 'Admin%'
between|between and|$map['id'] = array('between','1,8');|id BETWEEN 1 AND 8
not between|not between and|$map['id'] = array('not between','1,8');|id NOT BETWEEN 1 AND 8
in|in|$map['id'] = array('in','1,5,8');|id in(1,5,8)
not in|not in|$map['id'] = array('not in','1,5,8');|id not in(1,5,8)
and(默认)|and|$map['id'] = array(array('gt',1),array('lt',10));|(id > 1) AND (id < 10)
or|or|$map['id'] = array(array('gt',3),array('lt',10), 'or');|(id > 3) OR (id < 10)
xor(异或)|xor|两个输入中只有一个是true时,结果为true,否则为false,例子略。|1 xor 1 = 0
exp|综合表达式|$map['id'] = array('exp','in(1,3,8)');|$map['id'] = array('in','1,3,8');

补充说明

同 SQL 一样,ThinkPHP运算符不区分大小写,eqEQ 一样。
between、 in 条件支持字符串或者数组,即下面两种写法是等效的:

$map['id']  = array('not in','1,5,8');
$map['id']  = array('not in',array('1','5','8'));

exp 表达式

上表中的 exp 不是一个运算符,而是一个综合表达式以支持更复杂的条件设置。exp 的操作条件不会被当成字符串,可以使用任何 SQL 支持的语法,包括使用函数和字段名称。

exp 不仅用于 where 条件,也可以用于数据更新,如:

$Dao = M("Article");

// 构建 save 的数据数组,文章点击数+1

$data['id'] = 10;
$data['counter'] = array('exp','counter+1');

// 根据条件保存修改的数据

$User->save($data);

以上片段均是转载于互联网