Esempio n. 1
0
function SearchReturnSaveStr($str)
{
    //所有汉字后添加ASCII的0字符,此法是为了排除特殊中文拆分错误的问题
    $str = preg_replace("/[�-�]{2}/", "\\0" . chr(0x0), $str);
    //拆分的分割符
    $search = array(",", "/", "\\", ".", ";", ":", "\"", "!", "~", "`", "^", "(", ")", "?", "-", "\t", "\n", "'", "<", ">", "\r", "\r\n", "\$", "&", "%", "#", "@", "+", "=", "{", "}", "[", "]", ":", ")", "(", ".", "。", ",", "!", ";", "“", "”", "‘", "’", "〔", "〕", "、", "—", " ", "《", "》", "-", "…", "【", "】");
    //替换所有的分割符为空格
    $str = str_replace($search, ' ', $str);
    //用正则匹配半角单个字符或者全角单个字符,存入数组$ar
    preg_match_all("/[�-�]?./", $str, $ar);
    $ar = $ar[0];
    //去掉$ar中ASCII为0字符的项目
    for ($i = 0; $i < count($ar); $i++) {
        if ($ar[$i] != chr(0x0)) {
            $ar_new[] = $ar[$i];
        }
    }
    $ar = $ar_new;
    unset($ar_new);
    $oldsw = 0;
    //把连续的半角存成一个数组下标,或者全角的每2个字符存成一个数组的下标
    for ($ar_str = '', $i = 0; $i < count($ar); $i++) {
        $sw = strlen($ar[$i]);
        if ($i > 0 and $sw != $oldsw) {
            $ar_str .= " ";
        }
        if ($sw == 1) {
            $ar_str .= $ar[$i];
        } else {
            if (strlen($ar[$i + 1]) == 2) {
                $ar_str .= SearchReturnQwm($ar[$i]) . SearchReturnQwm($ar[$i + 1]) . ' ';
            } elseif ($oldsw == 1 or $oldsw == 0) {
                $ar_str .= SearchReturnQwm($ar[$i]);
            }
        }
        $oldsw = $sw;
    }
    //去掉连续的空格
    $ar_str = trim(preg_replace("# {1,}#i", " ", $ar_str));
    //返回拆分后的结果
    return $ar_str;
}
Esempio n. 2
0
function SearchReturnSaveStr($str)
{
    //ËùÓкº×ÖºóÌí¼ÓASCIIµÄ0×Ö·û,´Ë·¨ÊÇΪÁËÅųýÌØÊâÖÐÎIJð·Ö´íÎóµÄÎÊÌâ
    $str = preg_replace("/[€-ÿ]{2}/", "\\0" . chr(0x0), $str);
    //²ð·ÖµÄ·Ö¸î·û
    $search = array(",", "/", "\\", ".", ";", ":", "\"", "!", "~", "`", "^", "(", ")", "?", "-", "\t", "\n", "'", "<", ">", "\r", "\r\n", "\$", "&", "%", "#", "@", "+", "=", "{", "}", "[", "]", "£º", "£©", "£¨", "£®", "¡£", "£¬", "£¡", "£»", "¡°", "¡±", "¡®", "¡¯", "£Û", "£Ý", "¡¢", "¡ª", "¡¡", "¡¶", "¡·", "£­", "¡­", "¡¾", "¡¿");
    //Ìæ»»ËùÓеķָî·ûΪ¿Õ¸ñ
    $str = str_replace($search, ' ', $str);
    //ÓÃÕýÔòÆ¥Åä°ë½Çµ¥¸ö×Ö·û»òÕßÈ«½Çµ¥¸ö×Ö·û,´æÈëÊý×é$ar
    preg_match_all("/[€-ÿ]?./", $str, $ar);
    $ar = $ar[0];
    //È¥µô$arÖÐASCIIΪ0×Ö·ûµÄÏîÄ¿
    for ($i = 0; $i < count($ar); $i++) {
        if ($ar[$i] != chr(0x0)) {
            $ar_new[] = $ar[$i];
        }
    }
    $ar = $ar_new;
    unset($ar_new);
    $oldsw = 0;
    //°ÑÁ¬ÐøµÄ°ë½Ç´æ³ÉÒ»¸öÊý×éϱê,»òÕßÈ«½ÇµÄÿ2¸ö×Ö·û´æ³ÉÒ»¸öÊý×éµÄϱê
    for ($ar_str = '', $i = 0; $i < count($ar); $i++) {
        $sw = strlen($ar[$i]);
        if ($i > 0 and $sw != $oldsw) {
            $ar_str .= " ";
        }
        if ($sw == 1) {
            $ar_str .= $ar[$i];
        } else {
            if (strlen($ar[$i + 1]) == 2) {
                $ar_str .= SearchReturnQwm($ar[$i]) . SearchReturnQwm($ar[$i + 1]) . ' ';
            } elseif ($oldsw == 1 or $oldsw == 0) {
                $ar_str .= SearchReturnQwm($ar[$i]);
            }
        }
        $oldsw = $sw;
    }
    //È¥µôÁ¬ÐøµÄ¿Õ¸ñ
    $ar_str = trim(preg_replace("# {1,}#i", " ", $ar_str));
    //·µ»Ø²ð·ÖºóµÄ½á¹û
    return $ar_str;
}