溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php中字符串截取的方法是什么

發(fā)布時(shí)間:2021-06-04 09:41:27 來(lái)源:億速云 閱讀:174 作者:小新 欄目:編程語(yǔ)言

這篇文章給大家分享的是有關(guān)php中字符串截取的方法是什么的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

方法:1、用“substr(字符串,開(kāi)始位置,截取長(zhǎng)度)”語(yǔ)句;2、用“mb_substr(字符串,開(kāi)始位置,截取長(zhǎng)度,編碼)”語(yǔ)句;3、用“mb_strcut(字符串,開(kāi)始位置,截取長(zhǎng)度,編碼)”語(yǔ)句;4、用“$str[字符位置]”語(yǔ)句。

本教程操作環(huán)境:windows7系統(tǒng)、PHP7.1版,DELL G3電腦

substr(字符串,開(kāi)始位置,截取長(zhǎng)度)

如果截取的字符串是多個(gè)字節(jié),就會(huì)出現(xiàn)亂碼,比如中文,適用于截取字母和數(shù)字

$str = 'hello';
echo substr($str,1,2);//輸出el

mb_substr(字符串,開(kāi)始位置,截取長(zhǎng)度,字符編碼)

適用于截取中文,按字來(lái)切分

echo mb_substr('這個(gè)真的很nice',0,3,'utf-8'); //輸出這個(gè)真

mb_strcut(字符串,開(kāi)始位置,截取長(zhǎng)度,字符編碼)

按照字節(jié)來(lái)切分

echo mb_strcut('這個(gè)真的很nice',0,3,'utf-8'); //輸出這

$str[0]

將字符串看做字符集合,中文不適用哦!

$str = 'hello';
echo $str[0];//輸出h

有時(shí)字符串中含有中英文數(shù)字等,所以自定義一個(gè)不區(qū)分中英文的函數(shù)來(lái)切分字符串

/**
* 
* 中英混合的字符串截取
* @param 待截取字符串 $sourcestr
* @param 截取長(zhǎng)度 $cutlength
*/
function sub_str($sourcestr, $cutlength) {
	$returnstr = '';//待返回字符串
	$i = 0;
	$n = 0;
	$str_length = strlen ( $sourcestr ); //字符串的字節(jié)數(shù) 
	while ( ($n < $cutlength) and ($i <= $str_length) ) {
		$temp_str = substr ( $sourcestr, $i, 1 );
		$ascnum = Ord ( $temp_str ); //得到字符串中第$i位字符的ascii碼 
		if ($ascnum >= 224) {//如果ASCII位高與224,
			$returnstr = $returnstr . substr ( $sourcestr, $i, 3 ); //根據(jù)UTF-8編碼規(guī)范,將3個(gè)連續(xù)的字符計(jì)為單個(gè)字符  
			$i = $i + 3; //實(shí)際Byte計(jì)為3
			$n ++; //字串長(zhǎng)度計(jì)1
		} elseif ($ascnum >= 192){ //如果ASCII位高與192,
			$returnstr = $returnstr . substr ( $sourcestr, $i, 2 ); //根據(jù)UTF-8編碼規(guī)范,將2個(gè)連續(xù)的字符計(jì)為單個(gè)字符 
			$i = $i + 2; //實(shí)際Byte計(jì)為2
			$n ++; //字串長(zhǎng)度計(jì)1
		} elseif ($ascnum >= 65 && $ascnum <= 90) {//如果是大寫(xiě)字母,
			$returnstr = $returnstr . substr ( $sourcestr, $i, 1 );
			$i = $i + 1; //實(shí)際的Byte數(shù)仍計(jì)1個(gè)
			$n ++; //但考慮整體美觀,大寫(xiě)字母計(jì)成一個(gè)高位字符
		}elseif ($ascnum >= 97 && $ascnum <= 122) {
			$returnstr = $returnstr . substr ( $sourcestr, $i, 1 );
			$i = $i + 1; //實(shí)際的Byte數(shù)仍計(jì)1個(gè)
			$n ++; //但考慮整體美觀,大寫(xiě)字母計(jì)成一個(gè)高位字符
		} else {//其他情況下,半角標(biāo)點(diǎn)符號(hào),
			$returnstr = $returnstr . substr ( $sourcestr, $i, 1 );
			$i = $i + 1; 
			$n = $n + 0.5; 
		}
	}
	return $returnstr;
}

感謝各位的閱讀!關(guān)于“php中字符串截取的方法是什么”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI