PHP 中英文混合排版中處理字串常用的函式

2021-04-12 21:29:18 字數 1698 閱讀 6882

# 判斷某個位置是中文字元的左還是右半部分,或不是中文

# 返回值 -1 左 0 不是中文字元 1 右

# 用法

/* $a = 'this is 中文';

print is_chinese($a, 1); // 0

print is_chinese($a,8); // -1

print is_chinese($a,9); // 1

*/ function is_chinese(&$str, $location)

if($i != $location)

else

return $f_str;

} # 中文字串倒置函式

# 如果乙個將乙個有中文的字串用strrev倒過來,就會產生亂碼

/* print cstrrev('this is 中文'); // 文中 si siht

*/ function cstrrev(&$str)

} else

} return $f_str;

} /* 中文字串擷取函式

一些中文字串擷取函式經常有一些問題,例如在一些自動換行程式中

$a=「1中2」;

經兩次擷取後,

csubstr($str,$a,0,2);

csubstr($str, $a, 2,2)

由於載取位置指向「中」的右位元組,可能會是這樣的結果

1, 2

用本函式會產生正確的結果

1中, 2

*/ # start 開始位置,從0開始

# long = 0 則從start 一直取到字串尾

# ltor = true 時從左到右取字元,false 時到右到左取字元

# $cn_len 中文字元按位元組取還是字數取,如果按字數取,則乙個中文當乙個位元組計算

function csubstr(&$str, $start=0, $long=0, $ltor=true, $cn_len=2)

else

$f_str = substr($str, $fs, $long);

if($ltor == false) $f_str = cstrrev($f_str);

return $f_str;

} # 取左字串

# 當cn_len == 2 時 $long 取左邊多少個字,反之則取左邊多少個位元組

function cleft(&$str, $long, $cn_len=2)

# 取右字串

function cright(&$str, $long, $cn_len=2)

# 對含有中文字元的文章分行格式化

# 再也不會發生因換行問題而產生的種種問題啦!!!

# 注:文章的每一行必須用 n (chr(13))進行分行

# $width 每行多少字元

# $br 將 每行用什麼字元當結束符

function ctext_wrap(&$text, $width=60, $br="

")

if($p == $j) $k = 0;

} $f_str .= csubstr($lines[$i], $j, $width-$k) . $br;

$j -= $k;

} }

return $f_str;

}  

PHP 中英文混合排版中處理字串常用的函式

判斷某個位置是中文字元的左還是右半部分,或不是中文 返回值 1 左 0 不是中文字元 1 右 用法 a this is 中文 print is chinese a,1 0 print is chinese a,8 1 print is chinese a,9 1 function is chines...

PHP中獲取中英文混合字串長度

今晚在寫框架的表單驗證類時,需要判斷某個字串長度是否在指定區間內,很自然地,想到了php中的strlen函式。str hello world echo strlen str 輸出12 然而在php自帶的函式中,strlen及mb strlen都是通過計算字串所佔位元組數來計算長度的,在不同的編碼情況...

中英文本元混合處理方法

1,txt檔案匯入sql時 303410001401?600 lang 4 t粵ig?0220?011840628900000?bpo 303410001501?600 landau中er?0220?011840628900000?bpo 303410001601?600 lang 6 t漢ig?0...