首頁 後端開發 php教程 PHP初记|中英混合字符串截取

PHP初记|中英混合字符串截取

Jun 13, 2016 pm 01:08 PM
return start string substr

PHP小记|中英混合字符串截取

常常在WEB页面显示记录列表的时候需要对过长内容进行截取。

采用PHP内置的substr函数对中英混合字符串,特别是字符编码在UTF-8的情况下,支持非常不好,会出现乱码。

所以自己写了一个函数:

?

function truncate($string, $len, $wordsafe = FALSE) {
	$slen = strlen($string);
	if ($slen <= $len) {
		return $string;
	}
	if ($wordsafe) {
		while (($string[-- $len] != ' ') && ($len > 0)) {
		};
	}
	if ((ord($string[$len]) < 0x80) || (ord($string[$len]) >= 0xC0)) {
		return substr($string, 0, $len) . "...";
	}
	while (ord($string[-- $len]) < 0xC0) {
	};
	return substr($string, 0, $len) . "...";
}
登入後複製

?

经测试成功。YEAH!

?

=======================================================================

2012-06-15更新:

?

今天再次写了一个,好处是会把两个英文字符当作一个汉字字符的长度:

所以传递的需要截取多少个汉字的长度

?

?

function truncate($string, $len, $cnCharWidth = 2) {

	$len = $len * $cnCharWidth;
	$suffix = "...";
	$newStr = "";

	for ($i = 0, $j = 0; $i < $len; $i++, $j++) {

		if (!isset($string[$j])) {
			$suffix = "";
			break;
		}

		$start = $j;
		while ($j < ($start +3) && !(ord($string[$j]) < 0x80)) {
			$j++;
		}
		if ($start == $j) {
			$charLen = 1;
		}
		else {
			$i = $i + 1;
			$j--;
			$charLen = 3;
		}

		$newStr .= substr($string, $start, $charLen);
	}

	return $newStr . $suffix;
}
登入後複製
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

使用java的String.valueOf()函數將基本資料型別轉換為字串 使用java的String.valueOf()函數將基本資料型別轉換為字串 Jul 24, 2023 pm 07:55 PM

使用Java的String.valueOf()函數將基本資料型別轉換為字串在Java開發中,當我們需要將基本資料型別轉換為字串時,常見的方法是使用String類別的valueOf()函數。這個函數可以接受基本資料類型的參數,並傳回對應的字串表示。在本文中,我們將探討如何使用String.valueOf()函數進行基本資料型別轉換,並提供一些程式碼範例來

C語言return的用法詳解 C語言return的用法詳解 Oct 07, 2023 am 10:58 AM

C語言return的用法有:1、對於傳回值類型為void的函數,可以使用return語句來提前結束函數的執行;2、對於傳回值型別不為void的函數,return語句的作用是將函數的執行結果傳回給呼叫者;3、提前結束函數的執行,在函數內部,我們可以使用return語句來提前結束函數的執行,即使函數並沒有回傳值。

怎麼把char數組轉string 怎麼把char數組轉string Jun 09, 2023 am 10:04 AM

char陣列轉string的方法:可以透過賦值來實現,使用{char a[]=" abc d\0efg ";string s=a;}語法,讓char陣列對string直接賦值,執行程式碼即可完成轉換。

docker start起不來怎麼辦 docker start起不來怎麼辦 Oct 21, 2022 pm 03:43 PM

docker start起不來的解決方法:1、檢查運作狀態,然後透過「echo 3 &gt; /proc/sys/vm/drop_caches」指令釋放被佔用的記憶體;2、透過「$netstat -nltp|grep .. .”指令檢查連接埠是否已被佔用,如果上線後發現佔有,則改為可用埠再重啟即可。

使用java的String.replace()函數替換字串中的字元(字串) 使用java的String.replace()函數替換字串中的字元(字串) Jul 25, 2023 pm 05:16 PM

使用Java的String.replace()函數替換字串中的字元(字串)在Java中,字串是不可變的對象,這意味著一旦創建了一個字串對象,就無法修改它的值。但是,你可能會遇到需要替換字串中的某些字元或字串的情況。這時候,我們可以使用Java的String類別中的replace()方法來實作字串的替換。 String類別的replace()方法有兩種重

Java中return和finally語句的執行順序是怎樣的? Java中return和finally語句的執行順序是怎樣的? Apr 25, 2023 pm 07:55 PM

原始碼:publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}#輸出上述程式碼的輸出可以簡單地得出結論:return在finally之前執行,我們來看下字節碼層面上發生了什麼事情。下面截取case1方法的部分字節碼,並且對照源碼,將每個指令的含義註釋在

2w字 詳解 String,yyds 2w字 詳解 String,yyds Aug 24, 2023 pm 03:56 PM

大家好,今天跟大家分享java基礎之String。 String類別的重要性就不必說了,可以說是我們後端開發用的最多的類,所以,很有必要好好聊聊它。

使用java的String.length()函數取得字串的長度 使用java的String.length()函數取得字串的長度 Jul 25, 2023 am 09:09 AM

使用Java的String.length()函數取得字串的長度在Java程式設計中,字串是一種非常常見的資料類型,我們經常需要取得字串的長度,即字串中字元的個數。在Java中,我們可以使用String類別的length()函數來取得字串的長度。下面是一個簡單的範例程式碼:publicclassStringLengthExample{publ

See all articles