分类目录归档:PHP

macOS Sierra系统下PHP5.6安装memcached扩展

一、下载扩展包及依赖

libmemcached下载地址
https://launchpad.net/libmemcached/+download

php-memcached下载地址 (PHP5.6选择2.2.0版本,PHP7选择3.X版本)
http://pecl.php.net/package/memcached

二、安装libmemcached依赖

mkdir -p /usr/local/libmemcached
tar zxvf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
./configure --prefix=/usr/local/libmemcached --with-memcached
make && make install

继续阅读

如何识别微信内置浏览器访问(识别扫一扫来源)

最近给公司做App统一扫描下载入口时,遇到一个问题,安卓版微信会屏蔽apk的下载,于是在扫码时,需判断是否是微信扫码,下面提供PHP和Js两种判断方法:

 

JavaScript版本判断

function is_weixn(){
  var ua = navigator.userAgent.toLowerCase();
  if(ua.match(/MicroMessenger/i)=="micromessenger") {
    return true;
  } else {
    return false;
  }
}

 

PHP判断

function isWeixin(){
  $agent = strtolower($_SERVER['HTTP_USER_AGENT']);
  $is_weixin = strpos($agent, 'micromessenger') ? true : false ;
  return $is_weixin;
}

 

PHP的匿名函数及闭包

匿名函数在编程语言中出现的比较早,最早出现在Lisp语言中,随后很多的编程语言都开始有这个功能了, 目前使用比较广泛的Javascript以及C#,PHP直到5.3才开始真正支持匿名函数, C++的新标准C++0x也开始支持了。

匿名函数是一类不需要指定标示符,而又可以被调用的函数或子例程,匿名函数可以方便的作为参数传递给其他函数, 最常见应用是作为回调函数。

继续阅读

PHP计算任意两个日期之间的天数

PHP面试题中,关于日期的题目作为基础考题经常出现,下面讨论一下获取两个日期之间的天数的方法。

收到一个答案,拆分年、月、日,分别进行减法,然后统计天数,好累。

针对低版本的PHP可以用下面的方式搞定:

 

$date1 = '2014-02-18 00:09:13';
	$date2 = '2014-03-19 00:02:18';

	function differDays($date1, $date2) {

		$differNums = strtotime($date2) - strtotime($date1);

		$differNums = $differNums / (3600 * 24);

		echo floor(abs($differNums));

	}

	echo differDays($date1, $date2);

	echo "\n";
//或者
	function difDays($date1,$date2){ 

		$date1 = substr($date1, 0, 10);
		$date2 = substr($date2, 0, 10);

		$time1 = explode("-", $date1); 
		$time2 = explode("-", $date2); 

		$date1 = mktime(0, 0, 0, $time1[1],$time1[2],$time1[0]); 
		$date2 = mktime(0, 0, 0, $time2[1],$time2[2],$time2[0]);

		return ($date2 - $date1)/(3600*24) - 1; 
	}

	echo difDays($date1, $date2);

PHP5.3以上版本可以使用date_diff:

 

function dateDiff($date1, $date2) {
		$datetime1 = new DateTime($date1);
		$datetime2 = new DateTime($date2);
		$interval = $datetime1->diff($datetime2);
		return $interval->format('%a');
	}

	echo dateDiff($date1, $date2);

 

本文例子下载:http://pan.baidu.com/s/1eQ1Nn14

 

随机取出一维数组中的N个元素 PHP

<?php

	$testArr = range(a, z);

	#######  the first method  

	$newArr = arrayRand($testArr);

	var_dump($newArr);

	function arrayRand($arr, $num = 3) {
		$arr1 = array_rand($arr, $num);

		$newArr = array();

		foreach ($arr1 as $key => $value) {
			$newArr[] = $arr[$value];
		}

		return $newArr;
	}
	echo "\n";


	######  the second method

	$arr2 = arrayRandom($testArr);

	var_dump($arr2);



	function arrayRandom($arr, $num = 3) {
		shuffle($arr);

		// list($a, $b, $c) = $arr;

		$newArr = array();

		for ($i = 0; $i < $num; $i++) {
			$newArr[] = $arr[$i];
		}

		return $newArr;
	}



	###### the third method    getting random value from assoc arrays

	$testArr = array(
		'a' => 'siyuantlw',
		'b' => 'chengxusheji',
		'c' => 'redisfans',
		'd' => 'phpzl',
		'e' => 'yemiansheji'
	);

	echo "\n";

	$newArr = assocArrayRandom($testArr);

	var_dump($newArr);

	function assocArrayRandom($arr, $num = 2) {
		$keyArr = array_keys($arr);

		shuffle($keyArr);

		$newArr = array();

		for ($i = 0; $i < $num; $i++) {
			$newArr[$keyArr[$i]] = $arr[$keyArr[$i]];
		}

		return $newArr;
	}

?>

利用SimpleXML 函数 生成XML文件

直接贴例子

 */

$data = array(
	array('ID' => 1, 'Title' => '程序设计', 'Desc' => '编程珠玑', 'Url' => 'Http://www.chengxusheji.com'),
	array('ID' => 2, 'Title' => 'Redisfans', 'Desc' => 'Redis爱好者', 'Url' => 'Http://www.redisfans.com'),
	array('ID' => 3, 'Title' => 'PHP之路', 'Desc' => 'PHP学习之路', 'Url' => 'Http://www.phpzl.com')	
);

$xmlString =<<<XML
<?xml version='1.0' encoding='utf-8'?>
<document>
</document>
XML;

$xml = simplexml_load_string($xmlString);

$xml->addChild('webSite', 'http://www.chengxusheji.com');//给 SimpleXML 元素添加一个子元素。
$xml->addChild('webMaster', '40285090@qq.com');
$xml->addChild('updatePeri', '10000');

//元素属性数组
$attributeArray = array(
    'Title' => array(
    'author' => 'siyuantlw'
    )
);

foreach($data as $key => $value) {

	$item = $xml->addChild('item');

	foreach ($value as $k => $val) {
		$node = $item->addChild($k, $val);

		if(isset($attributeArray[$k]) && is_array($attributeArray[$k])) {
			foreach ($attributeArray[$k] as $aKey => $aVal) {
				$node->addAttribute($aKey, $aVal);//给 SimpleXML 元素添加一个属性
			}
		}
	}
}

//输出
header("Content-type: text/xml");
echo $xml->asXml();//从 SimpleXML 元素获取 XML 字符串

//保存文件
//$xml->asXml("filepath/video.xml");

去下例子吧,wp编辑器过滤掉好多东西~
例子文件下载:http://pan.baidu.com/s/1c0jAsgg
提取密码:9j1i