Tag Archives: php

Hello World 他山石

log4php配置文件实例

文件名:log4php-1.properties

log4php.appender.default = LoggerAppenderDailyFile
log4php.appender.default.layout = LoggerLayoutPattern
log4php.appender.default.layout.ConversionPattern =%d{ISO8601} | [%p] | %m%n 
log4php.appender.default.datePattern = Ymd
log4php.appender.default.file = /Users/logs/php/%s.log
log4php.rootLogger = DEBUG,default

这样就可以通过建立多个配置文件,方便为每一个产品或者模块采用不同的配置,当然生成的日志目录也可以灵活管理。
调用如下:

include_once('log4php/Logger.php');  
Logger::configure("log4php-1.properties");  
$logger = Logger::getLogger('cam'); 
//debug
$logger->debug('---debug---');

————
参考:http://hmw.iteye.com/blog/1147299
下载log4php:http://logging.apache.org/log4php/download.html

Hello World

json_encode 处理特殊字符

php 内置的 json_encode 做完可选参数是可以处理特殊字符(引号,双引号,&,<>等):

<?php
$a = array('<foo>',"'b'ar'",'"ba"z"','&blong&');
 
echo "Normal: ", json_encode($a), "\n";
echo "Tags: ", json_encode($a, JSON_HEX_TAG), "\n";
echo "Apos: ", json_encode($a, JSON_HEX_APOS), "\n";
echo "Quot: ", json_encode($a, JSON_HEX_QUOT), "\n";
echo "Amp: ", json_encode($a, JSON_HEX_AMP), "\n";
echo "All: ", json_encode($a, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP), "\n\n";
 
$b = array();
 
echo "Empty array output as array: ", json_encode($b), "\n";
echo "Empty array output as object: ", json_encode($b, JSON_FORCE_OBJECT), "\n\n";
 
$c = array(array(1,2,3));
 
echo "Non-associative array output as array: ", json_encode($c), "\n";
echo "Non-associative array output as object: ", json_encode($c, JSON_FORCE_OBJECT), "\n\n";
 
$d = array('foo' => 'bar', 'baz' => 'long');
 
echo "Associative array always output as object: ", json_encode($d), "\n";
echo "Associative array always output as object: ", json_encode($d, JSON_FORCE_OBJECT), "\n\n";
?>

————-
参考:http://www.360pm.net/p/511

Hello World

用php实现BigPipe

bigpipe的简单php实现:

<!doctype>
<html>
<head>
	<meta charset="utf-8" />
	<title>php实现BigPipe</title>
</head>
<style>
</style>
<body>
	<div class="wrapper">
		<hr>
		<div class="section" id="con1">内容1,正在加载……</div>
		<hr>
		<div class="section" id="con2">内容2,正在加载……</div>
		<hr>
		<div class="section" id="con3">内容3,正在加载……</div>
		<hr>
	</div>
	<?php
		/*
		 * 输出缓存区
		 */
		function flush_now(){
			ob_flush();
			flush();
		}
		flush_now();
	?>
	<?php sleep(2);?>
		<script>
			document.getElementById("con1").innerHTML="====内容1====";
		</script>
	<?php flush_now()?>
 
	<?php sleep(2);?>
		<script>
			document.getElementById("con2").innerHTML="====内容2====";
		</script>
	<?php flush_now()?>
 
	<?php sleep(2);?>
		<script>
			document.getElementById("con3").innerHTML="====内容3====";
		</script>
	<?php flush_now()?>
</body>
</html>

最后,别忘了修改php.ini的:
output_buffering=4096

Hello World

php使用正则抠文字

比如有邮件模板:

当当网已收到您于${time}提交的订单${orderId},我们会在收到您的${amount}元的货款后及时处理订单,预计1-2天从${location}发货。

现在需要提取出其中的占位符来做下一步的处理,可以首先使用“/\\$\{\w+\}/”抠出占位符“${xxx}”,然后使用“/\w+/”抠出占位符内的支付,这两步,都需要使用preg_match_all方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function get_placeholder($str){
  $reg1 = "/\\$\{\w+\}/";
  $out1 = array();
  $r1 = preg_match_all($reg1, $str, $out1, PREG_PATTERN_ORDER);
  if($r1 &gt; 0){
    $reg2 = "/\w+/";
    $rArr = array();
    foreach($out1[0] as $o){
      $out2 = array();
      $r2 = preg_match_all($reg2, $o, $out2, PREG_PATTERN_ORDER);
      if($r2 &gt; 0){
        array_push($rArr, $out2[0][0]);
      }
    }
    if(count($rArr) &gt; 0){
      return $rArr;
    }
  }
  return false;
}

将上面的邮件模板放进去,便可以返回:array(‘time’, ‘orderId’, ‘amount’, ‘location’)

Hello World

php的四种取整方法

php中有四中常用的取整方法:ceil,floor,round,intval

ceil,进一法

ceil(4.3);                   // 5
ceil(9.999);              // 10

floor,舍去法

floor(4.3);              // 4
floor(9.999);         // 9

round,四舍五入

round(3.4);                 // 3
round(3.5);                  // 4
round(3.6);                  // 4
round(3.6, 0);              // 4
round(1.95583, 2);     // 1.96
round(1241757, -3);   // 1242000
round(5.045, 2);          // 5.05
round(5.055, 2);          // 5.06

intval,对变数转成整数型态

intval(4.3);      //4
intval(4.6);      // 4