帮我把这函数精简下啊,, 本帖最后由 mithetwo 于 2012-06-20 13:49:12 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 代码少的, 阿门, 这种认知太可怕了.PHP是你第一门语言, 也是你最后一门语言了. 我的认知是最少的代码且效率相差不大我当然喜欢代码少的...我非常希望PHP是最后一门语言,因为我没打算当PHP当口饭吃。完成心中理想哥就远离编程的世界,呵呵呵。 不用看功能上面欠的是判断$keyNum长度做不同判断我不想4个长度做4个判断,所以想看下精良的写法。。 $keyword="本德|鲍尔森";改为$keyword = array('本德', '鲍尔森');$ar = preg_split('/('.$keyword.')/', $varchar, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_OFFSET_CAPTURE);改为$ar = preg_split('/('.join('|', $keyword).')/', $varchar, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_OFFSET_CAPTURE);if($ar[$i][0] == '本德'||$ar[$i][0] == '鲍尔森') {改为if(in_array($ar[$i][0], $keyword)) { to qq120848369lz 的代码不是如你所说 http://topic.csdn.net/u/20120619/02/c024bcf0-9c61-4e61-b58c-2844f0af2310.html1,扫一遍找出所有的关键字。2,再扫一遍,计算出每个end_index位置之前的关键字总数,同时计算180个字符之前的beg_index位置的关键字个数差值。3,对关键字差值最大的180长度的段,strrstr,strstr分别头尾找到一个关键字,把多余的部分切掉,这样可以让字符再少一点。的思路做的吗?1、用 preg_split 完成找出所有的关键字2、从每一个关键字出现的位置开始统计指定长度内关键字出现的次数(双重循环)当然 lz 的代码也是用可优化的地方的,比如外层循环中的 $t = $ar[$j][1]; $r[$t] = 0;与内层循环中的 $r[$t=$ar[$i][1]] = 0;存在重复计算的问题(因为外层的 $j 已经遍历了全部关键字节点) ajax 返回参数带些转义字符 如何清除 什么是php php+iis+oracle配置环境下报错 php在页面之间传递select标签值! 关于html中select的问题,大家请进。 session最大能写多少数据? 讨论一下win2k下iis+php+mysql+pear的安全问题 如何实现析构函数的功能? 请问各位大侠,static函数是什么意思. 最新版phpstudy运行apache出现OS10013问题 外包公司? PHP5.3.8 与 SQLite3 :could not find driver
我非常希望PHP是最后一门语言,因为我没打算当PHP当口饭吃。
完成心中理想哥就远离编程的世界,呵呵呵。
上面欠的是判断$keyNum长度做不同判断
我不想4个长度做4个判断,所以想看下精良的写法。。
改为
$keyword = array('本德', '鲍尔森');$ar = preg_split('/('.$keyword.')/', $varchar, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_OFFSET_CAPTURE);
改为
$ar = preg_split('/('.join('|', $keyword).')/', $varchar, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_OFFSET_CAPTURE);if($ar[$i][0] == '本德'||$ar[$i][0] == '鲍尔森') {
改为
if(in_array($ar[$i][0], $keyword)) {
lz 的代码不是如你所说 http://topic.csdn.net/u/20120619/02/c024bcf0-9c61-4e61-b58c-2844f0af2310.html
1,扫一遍找出所有的关键字。
2,再扫一遍,计算出每个end_index位置之前的关键字总数,同时计算180个字符之前的beg_index位置的关键字个数差值。
3,对关键字差值最大的180长度的段,strrstr,strstr分别头尾找到一个关键字,把多余的部分切掉,这样可以让字符再少一点。的思路做的吗?
1、用 preg_split 完成找出所有的关键字
2、从每一个关键字出现的位置开始统计指定长度内关键字出现的次数(双重循环)当然 lz 的代码也是用可优化的地方的,比如
外层循环中的
$t = $ar[$j][1];
$r[$t] = 0;
与内层循环中的
$r[$t=$ar[$i][1]] = 0;
存在重复计算的问题(因为外层的 $j 已经遍历了全部关键字节点)