静坐常思己过,闲谈莫论人非

标签:PHP

微信公众平台高级群发接口问题处理
技术文档

微信公众平台高级群发接口问题处理

2015-01-10 2015-01-10 12570浏览 0评论 简洁版

1.问题描述

开发微信公众号的群发功能时,需要先上传图文消息素材,其POST数据格式类似于:

{
"articles": [
     {
        "thumb_media_id":"qI6_Ze_6PtV7svjolgs-rN6stStuHIjs9_DidOHaj0Q-mwvBelOXCFZiq2OsIU-p",
        "author":"xxx",
         "title":"Happy Day",
         "content_source_url":"www.qq.com",
         "content":"content",
         "digest":"digest",
        "show_cover_pic":"1"
     },
     {
        "thumb_media_id":"qI6_Ze_6PtV7svjolgs-rN6stStuHIjs9_DidOHaj0Q-mwvBelOXCFZiq2OsIU-p",
        "author":"xxx",
         "title":"Happy Day",
         "content_source_url":"www.qq.com",
         "content":"content",
         "digest":"digest",
        "show_cover_pic":"0"
     }
]
}

但碰到一个比较奇怪的问题,POST提交的数据若不经过编码处理,即使用代码为:

......
$article['content'] = $post_content;
......
$request    = array('articles'=>$articles);
$articles=json_encode($request);

群发的内容内包含中文时就会出现乱码,但多图文的条目是对的,如下图。

阅读更多...

微博内容字数统计函数(PHP版)
技术文档

微博内容字数统计函数(PHP版)

2014-09-27 2014-09-27 14246浏览 1评论 简洁版

最近在做一个项目,其中一部分的内容就是文章内容跟微博的同步,即在发布文章时,同步更新到微博。

需要解决的问题之一就是判断文章内容的长度,因为微博(包括新浪微博和腾讯微博)都有字数限制,不能超过140字,如果超过了,就会发布失败。

但微博的字数统计方法又有点特殊,其将中文字符作为一个长度,英文、数字、标点符号等两个为一个长度。PHP中常用的字数统计函数有strlen和mb_strlen等,在strlen函数中,统计得到的是字符串所占的字节数,其对待一个UTF8编码的中文字符是3个字节的长度,对于GB2312的中文编码,得到的则是2个字节长度,英文则是一个字节的长度;而在mb_strlen函数中,中英文都会被计算为一字节的长度。因此,使用PHP自带的函数进行微博内容字数统计,显然会造成统计结果错误。

解决方案

阅读更多...

美女时钟
技术文档

美女时钟

2013-11-15 2013-11-15 8444浏览 6评论 简洁版

偶然在一个网站上面看到了美女时钟这个东西,觉得挺好玩的,非常养眼。发现图片来自搜道,Google了一下,美女时钟已经流行一段时间了,相对来说搜道的较为知名。可惜它没有开放官方API模块来供其他网站调用,但是它提供了两个API地址,可以提供一些数据,利用这些数据我们可以自己来做美女时钟模块。

本站演示:http://loosky.net/clock

文章、代码摘自:arayzou

1、获取图片地址

搜道提供的当前时间的美女时钟API为: http://www.sodao.com/ShowTime/gt

当前时间的下一分钟的API为:http://www.sodao.com/ShowTime/gt1

由于不能直接用ajax来请求搜道的数据,因为涉及到跨域问题,因此需要在本站用PHP来请求搜道的数据并提供给ajax使用。

分别建立clock.phpclock_gt1.phpclock.php代码如下:

<?php
function postIt($url)
{
    $result=file_get_contents($url);
    return $result;
}

$url="http://www.sodao.com/ShowTime/gt";

print_r(postIt($url));

阅读更多...

Flash上传出现IO Error #2038的错误解决方法
技术文档

Flash上传出现IO Error #2038的错误解决方法

2013-10-23 2013-10-23 16272浏览 0评论 简洁版

1、问题

最近在开发网盘系统的时候发现,上传大文件时会提示IO Error #2038 的错误。系统采用了PHP和Flash控件来上传文件,网上的资料表明出现此错误的可能原因包括:

  1. URL无效

  2. 上传文件大小超过服务器最大上传限制或最大POST限制

  3. 与服务器连接异常中断

  4. 上传的文件为空

  5. 文件(夹)权限

2、解决方法

首先排除了3、4和5的原因,而在上传小文件的时候是正常的,也可以排除1的原因。故此集中在第2项进行解决,可能的原因包括:

阅读更多...

WordPress获取文章(相册)中图片的数量
技术文档

WordPress获取文章(相册)中图片的数量

2013-10-20 2013-10-20 6138浏览 1评论 简洁版

1. 需求

小站的相册分类中文章主要有两种,一种使用的是WordPress的原生相册功能,另外一种则是普通的文章,文章内插入了图片;本文的需求就是统计文中的图片的总张数。

演示效果见:http://loosky.net/archives/category/album

演示图片

2. 解决方案

获取文章图片数量函数

将函数post_img_number放在functions.php中。

function post_img_number(){
    global $post, $posts;
    ob_start();
    ob_end_clean();

    //使用do_shortcode($post->post_content) 是为了处理在相册的情况下统计图片张数
    $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i',do_shortcode($post->post_content), $matches);
    $cnt = count( $matches[1] );
    return $cnt;
}

注:本函数最大的改进是通过使用do_shortcode($post->post_content)来调用WordPress文章的内容而不是使用$post->post_content,可以解决使用原生相册功能功能时图片不能统计的问题。

阅读更多...

长微博生成(html to image)原理
技术文档

长微博生成(html to image)原理

2013-10-01 最后修改:2013-10-27 12:13 34151浏览 20评论 简洁版

在平时工作中有一些需求,简单而言就是需要将一些内容生成图片。简单的内容通过PhotoShop处理还行,但是类似于带表格等的内容,每次都通过PhotoShop进行处理太浪费时间。网上有很多类似于长微博等的生成工具,生成简单的图片还行,但是要使用富文本生成图片,则多需要money,于是便自己研究了一下基于PHP的实现。

首先展示一下演示效果http://loosky.cn/

需求及原理

基于PHP,将html内容生成图片(PNG,JPEG等)

实现方法

1. 直接通过图形函数生成

可以直接使用PHP中自带的GD库imagick,将文字内容转换成为图片。这在处理纯文字内容的时候是很给力的,但是对于富文本内容来说却很吃力了,很难处理好。目前开源的有painty等,可以支持p、img等几个简单的html标签。

2. html->pdf->png

该方式即首先将html内容生成pdf文档,再将pdf文档转换成为图片。

html to pdf:目前较为成熟的方案包括tcpdfHTML2PDF等,其实HTML2PDF也是使用的tcpdf的内核;

pdf to png:可以通过imagick php扩展。

阅读更多...

Tiny Tiny RSS--Google Reader的替代
技术文档

Tiny Tiny RSS–Google Reader的替代

2013-07-30 2013-07-30 20476浏览 2评论 简洁版

Google Reader是一款无可替代的伟大产品,但实实在在地跟我们告别了。一直以来习惯于通过订阅RSS来浏览文章,说实在话并不喜欢通过微博或者微信来浏览,信息量太大,而真正有用的东西又不多,极容易被淹没,不容易沉淀。

Google Reader关闭后,一直用着the Old Reader,其使用习惯和界面均比较接近于Google Reader。但比较痛苦的地方在于速度和稳定性均不是很好,经常长时间不能访问,难以忍受。于是便想自己搭建一个平台,先尝试了NewsBlur,基于Django的,步骤相当繁琐。刚好碰到小众软件介绍了Tiny Tiny RSS,基于PHP+MySQL/PostgreSQL,安装起来也很方便。于是便安装了一个试试,发现挺不错的。

Tiny Tiny RSS 是使用 SimplePie 作为 RSS 抓取引擎的,抓取回来的文章数据需要保存在 MySQL/PostgreSQL 数据库里,抓取数据的时候,需要消耗一定的流量,所以,如果你的订阅源多的话,搭建类似的站点的确是一个消耗存储空间、带宽的活。

一、优点

项目主页: http://tt-rss.org/,其优点如下:

  1. feed状况检查:可以检查订阅的feeds是否失效
  2. 支持各种主题,包括模仿Google Reeder、feedly界面的主题
  3. 有适合移动设备的皮肤/插件
  4. 支持插件,其中精品插件包括ff_feedcleaner(feed内容过滤)、af_feedmod(制作全文阅读feed)、oneclickpocket(一键发送到pocket)、fever(模拟fever api,支持更多客户端)等
  5. 支持多种平台的客户端,包括Andriod、WP、iOS等
  6. 可以灵活地设置更新频率,第一时间获得订阅更新
  7. 支持导入OPML
  8. 可以收藏
  9. 有中文版本,但不完全
  10. filter功能:类似gmail的filter。从标题,内容,时间等等中匹配关键词,然后可以选择是打分还是加tag,加label,加星,标记已读,删除条目等,filter可以是作用于所有feed或者指定feed。可以是匹配关键词,或者是剔除关键词。
  11. 条目中的图片可以选择是显示还是隐藏。
  12. 邮件digest。把每天的未读条目作为digest发送到指定邮箱。而且可以选择发送了的条目自动标记为已读。发送时间也可以指定。
  13. 基于sphinx的全文搜索
  14. ...

二、安装要求

要求其实挺简单的,见官方wiki

1. PHP版本必须高于5.3;
2. 可选PostgreSQL 或 MySQL数据库,其中MySQL数据库必须支持InnoDB.

阅读更多...