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; }
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; }