導航:首頁 > 編程語言 > php取文本長度

php取文本長度

發布時間:2025-02-13 16:39:29

php里如何截取英文和漢字為相同字元長度

<?php
$str1="str字元串";
$str2="strstrstrstr";
$str3="字元串字元串字元串";
echo mb_substr($str1,0,3,'utf-8')."<br>";
echo mb_substr($str2,0,3,'utf-8')."<br>";
echo mb_substr($str3,0,3,'utf-8')."<br>";
?>

前提是你的頁面編碼也是utf-8

㈡ php中如何限制字元長度以及如何去掉

用多位元組mb_strlen()統計字元串的字元長度。
在用mb_substr()截取指定長度的字元。

代碼中用名義上針對latin事實上針對byte位元組的strlen, substr是不能正確截取非拉丁文字的(比如阿拉伯文、中文)

㈢ PHP怎麼獲取字元串長度

PHP對中文字元串的處理一直困擾於剛剛接觸PHP開發的新手程序員。下面簡要的剖析一下PHP對中文字元串長度的處理:

(1)PHP自帶的函數如strlen()、mb_strlen()都是通過計算字元串所佔位元組數來統計字元串長度的,一個英文字元佔1位元組;

(2)中文則不然,做中文網站一般會選擇兩種編碼:gbk/gb2312或是utf-8。utf-8能兼容更多的字元,所以受到很多站長的喜愛。gbk與utf-8對中文的編碼不同,導致中文在gbk與utf-8編碼下所佔位元組也有差異。



㈣ php如何獲取中文字元長度,一個中文字元算一個

在PHP中專門的mb_substr和mb_strlen函數,可以對中文進行截取和計算長度,但是,由於這些函數並非PHP的核心函數,所以,它們常常有可能沒有開啟。要在php.ini中開啟即可。獲取長度實例:1 ,utf-8環境下使用

header('Content-type:text/html;charset=utf-8');
/**
*可以統計中文字元串長度的函數
*@param$str要計算長度的字元串
*@param$type計算長度類型,0(默認)表示一個中文算一個字元,1表示一個中文算兩個字元
*
*/
functionabslength($str)
{
if(empty($str)){
return0;
}
if(function_exists('mb_strlen')){
returnmb_strlen($str,'utf-8');
}
else{
preg_match_all("/./u",$str,$ar);
returncount($ar[0]);
}
}
$str='我們都是中國人啊,ye!';
$len=abslength($str);
var_mp($len);//return12
$len=abslength($str,'1');
echo'<br/>'.$len;//return22

/*
utf-8編碼下截取中文字元串,參數可以參照substr函數
@param$str要進行截取的字元串
@param$start要進行截取的開始位置,負數為反向截取
@param$end要進行截取的長度
*/
functionutf8_substr($str,$start=0){
if(empty($str)){
returnfalse;
}
if(function_exists('mb_substr')){
if(func_num_args()>=3){
$end=func_get_arg(2);
returnmb_substr($str,$start,$end,'utf-8');
}
else{
mb_internal_encoding("UTF-8");
returnmb_substr($str,$start);
}

}
else{
$null="";
preg_match_all("/./u",$str,$ar);
if(func_num_args()>=3){
$end=func_get_arg(2);
returnjoin($null,array_slice($ar[0],$start,$end));
}
else{
returnjoin($null,array_slice($ar[0],$start));
}
}
}
$str2='wo要截取zhongwen';
echo'<br/>';
echoutf8_substr($str2,0,-4);//returnwo要截取zhon

2,支持gb2312,gbk,utf-8,big5 中文截取方法

/*

* 中文截取,支持gb2312,gbk,utf-8,big5

*

* @param string $str 要截取的字串

* @param int $start 截取起始位置

* @param int $length 截取長度

* @param string $charset utf-8|gb2312|gbk|big5 編碼

* @param $suffix 是否加尾綴

*/

public function csubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)

{

if(function_exists("mb_substr"))

{

if(mb_strlen($str, $charset) <= $length) return $str;

$slice = mb_substr($str, $start, $length, $charset);

}

else

{

$re['utf-8'] = "/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/";

$re['gb2312'] = "/[x01-x7f]|[xb0-xf7][xa0-xfe]/";

$re['gbk'] = "/[x01-x7f]|[x81-xfe][x40-xfe]/";

$re['big5'] = "/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/";

preg_match_all($re[$charset], $str, $match);

if(count($match[0]) <= $length) return $str;

$slice = join("",array_slice($match[0], $start, $length));

}

if($suffix) return $slice."…";

return $slice;

}

㈤ php截取字元

結論:在PHP開發中,遇到需求需要截取字元串而不打斷單詞時,手冊推薦的`mb_strimwidth()`函數未能滿足預期。開發者自行實現了一種方法,利用`wordwrap()`函數打斷單詞並計算長度,以達到截取目的。下面是一個直觀的實現過程:

在項目中,當遇到需要精確截取字元串而不打斷單詞的需求時,我嘗試了PHP手冊中的`mb_strimwidth()`函數,但未能如願。於是,我自定義了一個函數,雖然存在小問題,但基本能完成任務。這個函數原理是先用`wordwrap()`函數將字元串拆分成單詞,然後通過`mb_strlen()`計算單詞長度,直到達到設定的截取長度。讓我們通過一個示例來看一下這個過程:

原始字元串:

$str = 'readonly this boolean attribute indicates that the user cannot modify the value of the control. Unlike the disabled attribute, the readonly attribute does not prevent the user from clicking or selecting in the control. long ge blog』s The value of a read-only control is still submitted with the form.'

使用自定義函數截取100個字元:

echo wordcut($str, 100);

該函數的代碼如下,主要用於英文字元串的截取,注意它不適用於中文,但可以通過調整來兼容:

php
function wordcut($string, $cutlength = 250, $replace = '…') {
if (mb_strlen($string) <= $cutlength) {
return $string;
} else {
$totalLength = 0;
$newwords = [];
$wrap = wordwrap($string, 1, "t");
$wraps = explode("t", $wrap);

foreach ($wraps as $tmp) {
$newwords[] = $tmp;
$totalLength += mb_strlen($tmp);
if ($totalLength >= $cutlength) {
break;
}
}

$str = trim(implode(" ", $newwords));
return empty($str) ? $str : $str . ' ' . $replace;
}
}

這個函數會確保在不超過指定長度的情況下,完整保留單詞,如果超過則以省略號結尾。注意,目前它的一個小問題是 `$cutlength` 並非實際長度,而是單詞總長度達到這個值時停止,忽略空格長度。在實際使用中,可以考慮進一步優化。

㈥ php哪個函數能取得字元串長度

對於PHP新手程序員來說,理解中文字元串長度的處理可能是個挑戰。PHP內置的strlen()和mb_strlen()函數通常基於位元組數來計算長度,對英文字元而言,一個字元佔1位元組。例如:

$e的味院京海留nStr = 'Hello,China!';
echo strlen($enStr); // 輸出:12

然而,中文字元的編碼情況不同。常見的中文編碼有gbk/gb2312和utf-8。utf-8編碼能容納更多字元,因此更受歡迎。gbk和utf-8編碼下,中文字元的位元組數不同:gbk每個中文字元佔2位元組,utf-8佔3位元組。如:

$zhStr = '您好,中國!';
echo strlen($zhStr); // gbk編碼:12
echo mb_strlen($zhStr, 'utf-8'); // utf-8編碼:18

單純除以字元佔用的位元組數來計算長度並不完全適用,因為實際的字元串常常包含中英文混合。一個常見的解決方案是在WordPress中,通過正則表達式將字元串分解為單個字元,然後計算字元個數來得到長度。以下是一個處理utf-8編碼字元串的示例:

$zhStr = '您好,中國!';
$str = 'Hello,態守含鄉席凱樣司濃中國!';
// 計算中文字元串長度
function utf8_strlen($string = '') {
preg_match_all("/./us", $string, $match);
return count($match[0]);
}
echo utf8_strlen($zhStr); // 輸出:6
echo utf8_strlen($str); // 輸出:15

因此,對於包含中英文混合的utf-8編碼字元串,使用正則分解並計算單元個數是更為准確的方法。對於其他編碼的處理,則需要根據實際情況調整計算方式。

㈦ php中如何限制字元長度以及如何去掉

用多位元組mb_strlen()統計字元串的字元長度。
在用mb_substr()截取指定長度的字元。

代碼中用名義上針對latin事實上針對byte位元組的strlen, substr是不能正確截取非拉丁文字的(比如阿拉伯文、中文)

閱讀全文

與php取文本長度相關的資料

熱點內容
單片機如何給電腦加密碼 瀏覽:517
如何刪掉多餘的伺服器 瀏覽:220
c編程演算法 瀏覽:833
堵車如何緩解壓力 瀏覽:17
喜鵲快貸app怎麼了 瀏覽:263
海龜編輯器積木編程怎麼安裝 瀏覽:185
程序員理發店生意怎麼樣 瀏覽:603
程序員羅技 瀏覽:180
軟考初級程序員課程2021下載 瀏覽:491
杭州程序員奶奶 瀏覽:880
不聽命令造成錯誤 瀏覽:981
kool系統源碼 瀏覽:610
流氓app在哪裡看 瀏覽:98
域名購買了怎麼指向伺服器 瀏覽:121
安卓手機如何讓照片顏色反轉 瀏覽:859
怎麼下載卓睿安手機版 瀏覽:514
h3crange命令 瀏覽:468
php前景和python 瀏覽:338
php壓縮圖片內存大小 瀏覽:495
在哪裡可以查看雲伺服器的信息 瀏覽:70