Heim > Backend-Entwicklung > PHP-Tutorial > php中文支持函数 php中文截取字符串函数 PHP中文字符串翻转

php中文支持函数 php中文截取字符串函数 PHP中文字符串翻转

WBOY
Freigeben: 2016-07-25 08:57:34
Original
923 Leute haben es durchsucht
  1. /**
  2. * 将一个字串中含有全角的数字字符、字母、空格或'%+-()'字符转换为相应半角字符
  3. *
  4. * @access public
  5. * @param string $str 待转换字串
  6. *
  7. * @return string $str 处理后字串
  8. */
  9. function make_semiangle($str)
  10. {
  11. $arr = array('0' => '0', '1' => '1', '2' => '2', '3' => '3', '4' => '4',
  12. '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9',
  13. 'A' => 'A', 'B' => 'B', 'C' => 'C', 'D' => 'D', 'E' => 'E',
  14. 'F' => 'F', 'G' => 'G', 'H' => 'H', 'I' => 'I', 'J' => 'J',
  15. 'K' => 'K', 'L' => 'L', 'M' => 'M', 'N' => 'N', 'O' => 'O',
  16. 'P' => 'P', 'Q' => 'Q', 'R' => 'R', 'S' => 'S', 'T' => 'T',
  17. 'U' => 'U', 'V' => 'V', 'W' => 'W', 'X' => 'X', 'Y' => 'Y',
  18. 'Z' => 'Z', 'a' => 'a', 'b' => 'b', 'c' => 'c', 'd' => 'd',
  19. 'e' => 'e', 'f' => 'f', 'g' => 'g', 'h' => 'h', 'i' => 'i',
  20. 'j' => 'j', 'k' => 'k', 'l' => 'l', 'm' => 'm', 'n' => 'n',
  21. 'o' => 'o', 'p' => 'p', 'q' => 'q', 'r' => 'r', 's' => 's',
  22. 't' => 't', 'u' => 'u', 'v' => 'v', 'w' => 'w', 'x' => 'x',
  23. 'y' => 'y', 'z' => 'z',
  24. '(' => '(', ')' => ')', '〔' => '[', '〕' => ']', '【' => '[',
  25. '】' => ']', '〖' => '[', '〗' => ']', '“' => '[', '”' => ']',
  26. '‘' => '[', '’' => ']', '{' => '{', '}' => '}', '《' => ' '》' => '>',
  27. '%' => '%', '+' => '+', '—' => '-', '-' => '-', '~' => '-',
  28. ':' => ':', '。' => '.', '、' => ',', ',' => '.', '、' => '.',
  29. ';' => ',', '?' => '?', '!' => '!', '…' => '-', '‖' => '|',
  30. '”' => '"', '’' => '`', '‘' => '`', '|' => '|', '〃' => '"',
  31. ' ' => ' ','$'=>'$','@'=>'@','#'=>'#','^'=>'^','&'=>'&','*'=>'*');
  32. return strtr($str, $arr);
  33. }
复制代码

例2,php中文截取字符串

  1. /*
  2. Utf-8、gb2312都支持的汉字截取函数
  3. cut_str(字符串, 截取长度, 开始长度, 编码);
  4. 编码默认为 utf-8
  5. 开始长度默认为 0
  6. * edit: bbs.it-home.org
  7. */
  8. function cut_str($string, $sublen, $start = 0, $code = 'UTF-8') {
  9. if ($code == 'UTF-8') {
  10. $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";
  11. preg_match_all ( $pa, $string, $t_string );
  12. if (count ( $t_string [0] ) - $start > $sublen)
  13. return join ( '', array_slice ( $t_string [0], $start, $sublen ) ) . "...";
  14. return join ( '', array_slice ( $t_string [0], $start, $sublen ) );
  15. } else {
  16. $start = $start * 2;
  17. $sublen = $sublen * 2;
  18. $strlen = strlen ( $string );
  19. $tmpstr = '';
  20. for($i = 0; $i if ($i >= $start && $i if (ord ( substr ( $string, $i, 1 ) ) > 129) {
  21. $tmpstr .= substr ( $string, $i, 2 );
  22. } else {
  23. $tmpstr .= substr ( $string, $i, 1 );
  24. }
  25. }
  26. if (ord ( substr ( $string, $i, 1 ) ) > 129)
  27. $i ++;
  28. }
  29. if (strlen ( $tmpstr ) $tmpstr .= "...";
  30. return $tmpstr;
  31. }
  32. }
  33. $str = "abcd需要截取的字符串";
  34. echo cut_str ( $str, 1, 0, 'gb2312' );
  35. ?>
复制代码

例3,字符串的载取

  1. /**
  2. * 字符截取 支持UTF8/GBK
  3. * @param $string
  4. * @param $length
  5. * @param $dot
  6. */
  7. function str_cut($string, $length, $charset = 'utf-8', $dot = '...') {
  8. $strlen = strlen($string);
  9. if($strlen $string = str_replace(array(' ',' ', '&', '"', ''', '“', '”', '—', '<', '>', '·', '…'), array('∵',' ', '&', '"', "'", '“', '”', '—', '', '·', '…'), $string);
  10. $strcut = '';
  11. if(strtolower($charset) == 'utf-8') {
  12. $length = intval($length-strlen($dot)-$length/3);
  13. $n = $tn = $noc = 0;
  14. while($n $t = ord($string[$n]);
  15. if($t == 9 || $t == 10 || (32 $tn = 1; $n++; $noc++;
  16. } elseif(194 $tn = 2; $n += 2; $noc += 2;
  17. } elseif(224 $tn = 3; $n += 3; $noc += 2;
  18. } elseif(240 $tn = 4; $n += 4; $noc += 2;
  19. } elseif(248 $tn = 5; $n += 5; $noc += 2;
  20. } elseif($t == 252 || $t == 253) {
  21. $tn = 6; $n += 6; $noc += 2;
  22. } else {
  23. $n++;
  24. }
  25. if($noc >= $length) {
  26. break;
  27. }
  28. }
  29. if($noc > $length) {
  30. $n -= $tn;
  31. }
  32. $strcut = substr($string, 0, $n);
  33. $strcut = str_replace(array('∵', '&', '"', "'", '“', '”', '—', '', '·', '…'), array(' ', '&', '"', ''', '“', '”', '—', '<', '>', '·', '…'), $strcut);
  34. } else {
  35. $dotlen = strlen($dot);
  36. $maxi = $length - $dotlen - 1;
  37. $current_str = '';
  38. $search_arr = array('&',' ', '"', "'", '“', '”', '—', '', '·', '…','∵');
  39. $replace_arr = array('&',' ', '"', ''', '“', '”', '—', '<', '>', '·', '…',' ');
  40. $search_flip = array_flip($search_arr);
  41. for ($i = 0; $i $current_str = ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];
  42. if (in_array($current_str, $search_arr)) {
  43. $key = $search_flip[$current_str];
  44. $current_str = str_replace($search_arr[$key], $replace_arr[$key], $current_str);
  45. }
  46. $strcut .= $current_str;
  47. }
  48. }
  49. return $strcut.$dot;
  50. }
复制代码

例4,PHP中文字符串翻转 翻转一个字符串可以使用strrev()函数即可。 但有时需要处理是字符串是含中文的,这样用strrev就会出现乱码。 这里自定义一个函数来处理含中文的字符。

  1. /**

  2. * 中文字符串翻转
  3. * by bbs.it-home.org
  4. */
  5. function cstrrev($str)
  6. {
  7. $len = strlen($str);
  8. for($i = 0; $i {
  9. $char = $str{0};
  10. if(ord($char) > 127)
  11. {
  12. $i++;
  13. if($i {
  14. $arr[] = substr($str, 0, 2);
  15. $str = substr($str, 2);
  16. }
  17. }
  18. else
  19. {
  20. $arr[] = $char;
  21. $str = substr($str, 1);
  22. }
  23. }
  24. return join(array_reverse($arr));
  25. }
  26. #使用方法:

  27. $str = '中文.look!';
  28. echo cstrrev($str);
  29. #结果输出:!kool.文中
复制代码

附5,

  1. function str_replace_cn($needle, $str, $haystack, $charset = "utf-8"){
  2. $re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
  3. $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
  4. $re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
  5. $re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
  6. preg_match_all($re[$charset], $haystack, $match_haystack);
  7. preg_match_all($re[$charset], $needle, $match_needle);
  8. for($i = 0; $i if(!in_array($match_needle[0][$i], $match_haystack[0]))return $haystack;//无匹配
  9. }
  10. $match_haystack = $match_haystack[0];
  11. $match_needle = $match_needle[0];
  12. for($i = 0; $i if($match_haystack[$i] == "")continue;
  13. if($match_haystack[$i] == $match_needle[0]){
  14. if(count($match_needle) == 1){//如果只一个字符
  15. $match_haystack[$i] = $str;
  16. }else{
  17. $flag = true;
  18. for($j = 1; $j if($match_haystack[$i + $j] != $match_needle[$j]){
  19. $flag = false;
  20. break;
  21. }
  22. }
  23. if($flag){//匹配
  24. $match_haystack[$i] = $str;
  25. for($j = 1; $j $match_haystack[$i + $j] = "";
  26. }
  27. }
  28. }
  29. }
  30. }
  31. return implode("", $match_haystack);
  32. }
复制代码


Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage