PHP China | 中国开源之路 's Archiver

linkmr 发表于 2008-11-19 14:23

如何把重复的符号换成一个?

我用dedecms程序生成静态文件
fdioher--wehofdo----df.html
就是上面这种我想变成这种
fdioher-wehofdo-df.html
让横杆不重复

人家只给我这样一段代码我不知道如何用
preg_replace("/\-+/","-",$str);
请问怎样把这段代码加进这里

function SpGetPinyin($str,$ishead=0,$isclose=1){
    global $pinyins;
    $restr = "";
    $str = trim($str);
    $slen = strlen($str);
    if($slen<2) return $str;
    if(count($pinyins)==0){
        $fp = fopen(dirname(__FILE__)."/../data/pinyin.db","r");
        while(!feof($fp)){
            $line = trim(fgets($fp));
            $pinyins[$line[0].$line[1]] = substr($line,3,strlen($line)-3);
        }
        fclose($fp);
    }
    for($i=0;$i<$slen;$i++){
        if(ord($str[$i])>0x80)
        {
            $c = $str[$i].$str[$i+1];
            $i++;
            if(isset($pinyins[$c])){
                if($ishead==0) $restr .= $pinyins[$c];
                else $restr .= $pinyins[$c][0];
            }else $restr .= "-";
        }else if( eregi("[a-z0-9]",$str[$i]) ){    $restr .= $str[$i]; }
        else{ $restr .= "-";  }
    }
    if($isclose==0) unset($pinyins);
    return $restr;
}

liexusong 发表于 2008-11-19 15:25

哈哈,dedecms是我一个师兄写的~~你换了之后可能访问不到网页的了~

1nject10n 发表于 2008-11-20 00:56


$restr = preg_replace("/\-+/","-",$restr);
加在
return $restr;的上面。

不过其实最好还是加在调用这个函数得到返回值的地方,最好不要改变人家原有的函数。

这个函数会在创建文件前被调用,创建的文件名会一起跟着改变,根本不会发生楼上说的改完之后访问不到网页了。

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.