1. 程式人生 > >中文字串處理

中文字串處理

1. 擷取GB2312中文字串

<?php

< ?php
//擷取中文字串
function mysubstr($str, $start, $len) {
    $tmpstr = "";
    $strlen = $start + $len;
    for($i = 0; $i < $strlen; $i++) {
        if(ord(substr($str, $i, 1)) > 0xa0) {
            $tmpstr .= substr($str, $i, 2);
            $i++;
        } else
            $tmpstr .= substr($str, $i, 1);
    }
    return $tmpstr;
}
?>

2. 擷取utf8編碼的多位元組字串

<?php
< ?php
//擷取utf8字串
function utf8Substr($str, $from, $len)
{
    return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
                       '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
                       '$1',$str);
}
?>

3. UTF-8、GB2312都支援的漢字擷取函式

<?php
< ?php
/*
Utf-8、gb2312都支援的漢字擷取函式
cut_str(字串, 擷取長度, 開始長度, 編碼);
編碼預設為 utf-8
開始長度預設為 0
*/

function cut_str($string, $sublen, $start = 0, $code = 'UTF-8')
{
    if($code == 'UTF-8')
    {
        $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]/";
        preg_match_all($pa, $string, $t_string);

        if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen))."...";
        return join('', array_slice($t_string[0], $start, $sublen));
    }
    else
    {
        $start = $start*2;
        $sublen = $sublen*2;
        $strlen = strlen($string);
        $tmpstr = '';

        for($i=0; $i< $strlen; $i++)
        {
            if($i>=$start && $i< ($start+$sublen))
            {
                if(ord(substr($string, $i, 1))>129)
                {
                    $tmpstr.= substr($string, $i, 2);
                }
                else
                {
                    $tmpstr.= substr($string, $i, 1);
                }
            }
            if(ord(substr($string, $i, 1))>129) $i++;
        }
        if(strlen($tmpstr)< $strlen ) $tmpstr.= "...";
        return $tmpstr;
    }
}

$str = "abcd需要擷取的字串";
echo cut_str($str, 8, 0, 'gb2312');
?>

4. BugFree 的字元擷取函式


< ?php
/**
 * @package     BugFree
 * @version     $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $
 *
 *
 * Return part of a string(Enhance the function substr())
 *
 * @author                  Chunsheng Wang <[email protected]>
 * @param string  $String  the string to cut.
 * @param int     $Length  the length of returned string.
 * @param booble  $Append  whether append "...": false|true
 * @return string           the cutted string.
 */
function sysSubStr($String,$Length,$Append = false)
{
    if (strlen($String) < = $Length )
    {
        return $String;
    }
    else
    {
        $I = 0;
        while ($I < $Length)
        {
            $StringTMP = substr($String,$I,1);
            if ( ord($StringTMP) >=224 )
            {
                $StringTMP = substr($String,$I,3);
                $I = $I + 3;
            }
            elseif( ord($StringTMP) >=192 )
            {
                $StringTMP = substr($String,$I,2);
                $I = $I + 2;
            }
            else
            {
                $I = $I + 1;
            }
            $StringLast[] = $StringTMP;
        }
        $StringLast = implode("",$StringLast);
        if($Append)
        {
            $StringLast .= "...";
        }
        return $StringLast;
    }
}

$String = "17test.info 走在中國自動化測試的前沿";
$Length = "18";
$Append = false;
echo sysSubStr($String,$Length,$Append);
?>

相關推薦

中文字串處理

1. 擷取GB2312中文字串 <?php < ?php //擷取中文字串 function mysubstr($str, $start, $len) { $tmpstr = ""; $strlen = $start + $len; f

處理中文字串的函式

處理中文字串的函式 <%!public String codeToString(String str) {//處理中文字串的函式 String s = str; try { byte tempB[] = s.getBytes("ISO-8859-1"); s = new

處理中文字串的時候,如何處理�這個字元

首先需要明白�這個字元是什麼意思,是怎麼產生的 解釋:從某編碼向Unicode編碼轉化時,如果沒有對應的字元,得到的將是Unicode的程式碼“\uffffd”,也就是�這個字元。 比如:伺服器端用GB2312對響應的資料進行編碼,而接收端使用預設UTF-8編碼接收是對應不上的,就會出現

PHP中文處理 中文字串擷取(mb_substr)和獲取中文字串字數

一、中文擷取:mb_substr()  mb_substr( $str, $start, $length, $encoding )  $str,需要截斷的字串  $start,截斷開始處,起始處為0  $length,要擷取的字數  $encodin

遇到問題---redis命令列檢視中文亂碼--十六進位制字串處理

症狀 Redis在使用命令列操作時,如果檢視內容或者key中包含中文,會顯示16進位制的字串”\xe4\xb8\xad\xe5\x9b\xbd” 127.0.0.1:6379> set k1 '中國' OK 127.0.0.1:6379> get

lua 含中文字串處理--分離字元、計算字元數、擷取指定長度

lua中對中文字串的一些處理 分離字元 將每個字元分離出來,放到table中,一個單元內一個字元 function StringToTable(s) local tb = {} --[[ UTF8的編碼規則: 1. 字元的第一個

Linux 處理中文字串 :/區分中文和英文的方法

#include <stdio.h> #include <string.h> #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <wchar.h>

python關於windows建立含有中文字串的資料夾及檔案時亂碼的問題處理

資料夾和檔案的名字裡面含有中文字串時出現亂碼的處理: 把該字串編碼轉換為unicode或gbk編碼的字串來解決。程式碼第二行如有宣告編碼格式如utf-8,則程式碼裡面出現中文字串的地方就按照utf-8格式的字串去處理;如沒有編碼宣告,則windows系統預設為

iOS判斷字串中是否有中文處理方式

//判斷是否有中文 -(BOOL)hasChinese:(NSString *)str { for(int i=0; i< [str length];i++){ int

Spring MVC 返回型別為字串時, 返回中文變成"?"處理

這裡使用ResponseBody, 返回值直接是一個字串, 沒有用到jackson, 如果是返回一個Object, 使用jackson轉json, 是沒有編碼問題的 這時酒店查詢幾個字全都變成了問號 由於Spring處理返回值為String型別的結果時使

C++ 對中文字串處理

1、wstring輸出漢字需要設定一下 wstring wstr2=Ansi_To_Unicode(str2); wcout.imbue(locale("chs")); wcout<<wstr2<<endl; 2、如何搜尋字串中的漢字 //返

C#對URL中的中文亂碼處理

res quest 類庫 處理 odin .dll 前言 中文亂碼 ring 前言:UTF-8中,一個漢字對應三個字節,GB2312中一個漢字占用兩個字節。 不論何種編碼,字母數字都不編碼,特殊符號編碼後占用一個字節。 1、直接在C#後臺編碼URL參數 引用類庫:Syste

Datastage JDBC Connector 中文亂碼處理

default 中文亂碼 在Datastage中,通常處理中文字符編碼的時候是通過設置工程、JOB、stage三個級別的NLS但JDBC Connector stage這個組件並沒有NLS選項,而是通過 stage裏面的“Properties”選項卡裏面的“Session”-->“Charact

Java中文亂碼處理

art data- data XML direct 中文亂碼處理 new size tracking 一、處理get方法中文亂碼 方法1 String name = new String(request.getParameter("userName&

YAML 對中文處理

odin enc import int 中文 Coding pen all true from yaml import load,dump f = open(‘xx.ymal‘,encoding=‘utf-8‘) l = load(f) print(f) w

關於機器學習中文處理的一些常用方法

機器學習 tfidf lda word2vec前言 文本挖掘也是機器學習或者說是人工智能最需要處理的一類信息(其它的諸如語音、圖像及視頻處理等);隨著數字信息化和網絡化進程不斷深入,用戶的在線交流、發布、共享等都被以文字形式記錄下來,它們成為分析語言和理解社會的重要素材來源,對於文本的挖掘主要包括文檔分類、

MySQL中文亂碼處理_字符集轉換處理

MySQL 中文亂碼 字符集轉換-- 中文亂碼修復 -- 查看MySQL服務參數設置mysql> show variables like ‘%character%‘;+--------------------------+----------------------------------+| Vari

Python爬蟲中文小說網點查找小說並且保存到txt(含中文亂碼處理方法)

nbsp nor png erro 請求方式 輸出結果 下載 ros mozilla 從某些網站看小說的時候經常出現垃圾廣告,一氣之下寫個爬蟲,把小說鏈接抓取下來保存到txt,用requests_html全部搞定,代碼簡單,容易上手. 中間遇到最大的問題就是編碼問題,第一抓

spring mvc 中文亂碼處理

param pat encoding mvc ren 處理 web.xml framework 亂碼處理 在 web.xml中添加 <filter> <filter-name>characterEncodingFilter</filt

日誌中文亂碼處理,請求亂碼,響應亂碼,保存數據到數據庫亂碼

conf 服務器 過濾器 close 發布服務 setting open odi idea 1.日誌亂碼處理 中文亂碼需要修改四個部分:1.idea安裝目錄下的bin/idea64.exe.vmoptions和bin/idea.exe.vmoptions追加-Dfile.e