Thursday, 10. September 2009, 02:05:20
function, PHP
新作了两个函数,结果没用上,放在在这儿以备用。
/**
* 按词分割字符串
* @param $str 元字符串
* @param $maxLength 单词最大长度
* @return array
*/
function splitInWords($str, $maxLength = 16) {
if(empty($str)) return array();
if($maxLength <= 0) $maxLength = 1;
$rawWords = explode(' ', $str);
$words = array();
foreach($rawWords as $word) {
$len = mb_strlen($word);
if($len > $maxLength) {
$pos = 0;
while($len > $maxLength) {
$words[] = mb_substr($word, $pos, $maxLength);
$pos += $maxLength;
$len -= $maxLength;
}
$words[] = mb_substr($word, $pos, $maxLength);
} else {
$words[] = $word;
}
}
return $words;
}
/**
* 按行(指定长度)分割字符串
* @param $str 元字符串
* @param $length 每行最大字符数
* @return array
*/
function splitInLines($str, $length = 80) {
$lines = array();
foreach(split("\n", $str) as $s) {
preg_match_all("/./u", $s, $matches);
$arr = $matches[0];
for($i = 0; $i < ceil(count($arr)/$length); $i++) {
$lines[] = join("", array_slice($arr, $i*$length, $length));
}
}
return $lines;
}
Wednesday, 10. June 2009, 01:24:37
JavaScript, function, extjs
方法一: 自己做递归函数function findChildRecursively(rootNode, key, value) {
var nodes = rootNode.childNodes;
for(var i = 0; i < nodes.length; i++) {
if(nodes[i].attributes[key] == value){
return nodes[i];
} else {
if(!nodes[i].isLeaf()) {
// 查找结果不包含 Folder 的情况下
continue;
}
if(!nodes[i].isLoaded()) {
//加载子节点,AsyncTreeNode 需要,TreeNode 则不需
nodes[i].reload();
}
if(node = findChildRecursively(nodes[i], key, value)) {
return node;
}
}
}
return null;
}
方法二: 利用现成方法 cascadevar node = null;
rootNode.cascade(function(n) {
if(n.isLeaf() && !n.isLoaded()) {
n.reload();
return true;
}
if(n.attributes[key] == value) {
node = n;
return false;
}
return true;
});
Friday, 29. May 2009, 08:55:57
Japanese, function, JavaScript
代码:
//四舍五入
function _round(num, X) {
X = X || 2;
return Math.round(num*Math.pow(10, X))/Math.pow(10, X);
}
//取得字符串的字节数
function _byteLength(str){
//方法一:正则
if(!str) return 0;
return str.replace(/[^\x00-\xFF]/g,'**').length;
//方法二:循环
/*
var byteLen=0,len=str.length;
for(var i=0; i<len; i++){
if(str.charCodeAt(i)>255){
byteLen += 2;
} else {
byteLen++;
}
}
return byteLen;
*/
}
//测试
var str = "試験helloテストテスト";
var size = _byteLength(str);
alert(size + ' bytes');
alert(_round(size/1024) + ' Kb');
Friday, 16. November 2007, 06:28:53
upload, function, PHP
/**
* 上传文件名的取得(若有重复,自动加 1, 2, 3 ...)
* @param $upload_name 上传文件名
* @param $dest_path 目标路径
* @return 新文件名
**/
function FILE_get_upload_filename($upload_name, $dest_path)
{
$fullpath = "$dest_path/$upload_name";
if(!file_exists($fullpath)) {
return $upload_name;
}
$ext = strrchr($upload_name, '.');
$filename = $upload_name;
if($ext !== false) {
$filename = substr($upload_name, 0, -strlen($ext));
}
$i = 0;
while (1) {
$i++;
$newname = "$filename$i$ext";
if(!file_exists("$dest_path/$newname")) {
return $newname;
}
}
}
Wednesday, 19. September 2007, 10:32:07
函数, 中文, Chinese, function
...
用 JavaScript 新作一个小东西,需要把阿拉伯数字转换成中文的表达方式,因此做了一个实现该功能的函数。函数很简单,也不是很完善,不过也许有人用得上,就贴在这儿了:
//*******************************************************
// 阿拉伯数字转中文
//*******************************************************
function toCnNumber(intNum) {
var strCnNum = '';
var arrCnNum = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"];
var arrCnMark = ["", "十", "百", "千", "万", "十万", "百万", "千万", "亿"];
var strNum = intNum.toString();
var intLen = strNum.length;
var zeroFlag = false;
for(var i = 0; i < intLen; i++) {
var n = parseInt(strNum.charAt(i));
if(parseInt(strNum.substr(i)) == 0) {
break;
} else {
if(n == 0) {
if(!zeroFlag) {
strCnNum += arrCnNum[n];
}
zeroFlag = true;
} else {
strCnNum += arrCnNum[n];
strCnNum += arrCnMark[intLen - i - 1];
zeroFlag = false;
}
}
}
return strCnNum;
}