Content Preview: rss
292 days ago
为了配置主目录,我尝尽了无数方法 C:\web\ c:/web/ 等等 最后google了好几页,才发先是特殊的表示方法: /cygdriver/C/web 其中cygdriver代表windows目录结构,第二个C代表c盘。后面跟的就是路径了。
318 days ago
假设有一堆服务器,我根据他们的配置给他们打分,想通过一个函数,随机的到一个服务器实例,当然不是百分百随机,而是配置越高的服务器得到几率越高,这就是权重。写了半天写出来了个算法,不过目前还有有一点Bug,就是权重值不能有重复的,否则重复的永远不会得到。 <?php /** * 权重DEMO */ $data = array( array('server1', 5), array('server2', 10), array('server3', 5), array('server4', 7), array('server5', 3), array('server6', 31) ); var_dump(checkWeight($data)); function checkWeight($data) { # 权重和 $sum = 0; # 权重值不能有负数 foreach ($data as $val) { if ($val[1] < 0) return false; $sum += $val[1]; } # 根据权重数排序 $sorted = true; while ($sorted) { $sorted = false; for ($i = 0; $i < count($data) - 1; $i ++) { if ($data[$i][1] < $data[$i + 1][1]) { swapvar(&$data[$i], &$data[$i + 1]); $sorted = true; } } } # 产生随机数,最小1,最大权重和 $randnum = rand(1, $sum); echo $randnum; # 如果随机数大于等于最大值,返回最大 if ($randnum >= $data[0][1]) return $data[0][0]; ...
320 days ago
在PHP 5.2.5中,可以按照如下方法声明函数 function getProductById(int $id); 而在PHP 5.2.1中,调用时则会报错,具体原因未知。
348 days ago
网上搜索了很多方法,大多数是: ob_start(); # 开启缓冲 readfile($url); # 输出远程文件的二进制到缓存中 $img = ob_get_contents(); # 把这些二进制存入变量 ob_end_clean(); # 清空缓存 $fp = fopen(“c:/123”, "w”); fwrite($fp, $img); # 保存到硬盘 fclose($fp); 这个方法不好,首先用ob_start()局限性大,况且必须写在第一行,否则高版本PHP无效,会将二进制输出到浏览器,也就是没有开启缓冲区,导致浏览器僵死。 其实最简单最安全的方法是: copy($url, “c:/123”); 从PHP 4.3.0开始,copy函数支持从网络上copy,所以用这个方法代替上述方法。前提是PHP配置文件需要打开fopen。
348 days ago
一、模式修正符号 preg_match(“/^a/ i ”, $subject, &$matches); 这条正则表达式中红色的i便是模式修正符号,i是不区分大小写,经常用。今天用到了一个s,含义是让任意匹配符.支持换行。例如要匹配一段html,中间包含若干空格回车,直接(.*)是得不到的,默认.不匹配空格回车,加上模式修正符号s就可以实现,例如: preg_match(“/<html>(.*?)<body>/s”, $subject, &$matches); 该正则表达式得到<html>和<body>之间的内容。 二、任意空白符号\s 匹配的内容前后后很多换行空格?用\s吧,将匹配所有空格换行。例如: preg_match(“/<html>\s+(.*?)</body>/i”, $subject, &$matches); 该正则将不要<html>后面的所有空格换行。



