一道PHP面试题的思考

题目是这样的:写一个php函数,将’9123456789’,转话成’9,123,456,789’的形式。

解法1:

function changeStr($str) {
return number_format($str, 0, ‘,’, ‘,’);
}

解法2:

function changeStr($str) {
return preg_replace(‘/\B(?=(\d{3})+$)/i’, ‘,’, $str);
}

解法3:

function changeStr($str) {
return preg_replace(‘/\B(\d{3})/i’, ‘,$1’, $str);
}

解法4:

function changeStr($str) {
$ret = ‘’;
$len = strlen($str);
$left = $len%3;
for ($i=0; $i<$len; $i++) {
if ($i%3 == $left && $i !==0) {
$ret .=’,’;
}
$ret .= $str[$i];
}
return $ret;
}

除了php提供的number_format外,使用正则替换是最简洁的方法了,当然,在使用number_format前,需要确认提供的字符串是否为数字串。

正则表达式在处理字符串问题时,是一个强有力的工具,下面再看些例子。

例1:实现一个unix样式的命令行过滤器,将段落开始部分的大写字母转换为小写。

'.$input\[1\].'
'; } return preg_replace_callback($regex, 'parseTagsRecursive', $input); } $output = parseTagsRecursive($input); echo $output;

胡伟Gopher & 广告引擎研发

士不可以不弘毅,任重而道远