php中截取中文字符串的代码小结_PHP
字符串截取是一个非常常见的编程任务,而往往带中文的字符串截取会经常用到。虽然不难,但是自己写函数实现又耗费时间,这里介绍一个比较好用的字符串截取函数,能够胜任基本的需求了。
1. 截取GB2312中文字符串
复制代码 代码如下:
//截取中文字符串
function mysubstr($str, $start, $len) {
$tmpstr = "";
$strlen = $start + $len;
for($i = 0; $i if(ord(substr($str, $i, 1)) > 0xa0) {
$tmpstr .= substr($str, $i, 2);
$i++;
} else
$tmpstr .= substr($str, $i, 1);
}
return $tmpstr;
}
?>
2. 截取utf8编码的多字节字符串
复制代码 代码如下:
//截取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都支持的汉字截取函数
复制代码 代码如下:
/*
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{
if($i>=$start && $i{
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)return $tmpstr;
}
}
$str = "abcd需要截取的字符串";
echo cut_str($str, 8, 0, 'gb2312');
?>
4. BugFree 的字符截取函数
复制代码 代码如下:
/**
* @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
* @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) {
return $String;
}
else
{
$I = 0;
while ($I {
$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);
?>

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Penjelasan terperinci tentang kaedah pemintasan rentetan dalam bahasa Go Dalam bahasa Go, rentetan ialah urutan bait yang tidak boleh diubah, jadi beberapa kaedah perlu digunakan untuk melaksanakan pemintasan rentetan. Pintasan rentetan ialah operasi biasa untuk mendapatkan bahagian tertentu rentetan Anda boleh memintas beberapa aksara pertama, beberapa aksara terakhir rentetan atau panjang aksara tertentu dari kedudukan tertentu mengikut keperluan anda. Artikel ini akan memperkenalkan secara terperinci cara memintas rentetan dalam bahasa Go dan memberikan contoh kod khusus. Menggunakan penghirisan untuk melaksanakan pemintasan rentetan Dalam bahasa Go, anda boleh menggunakan penghirisan ke

Cara menggunakan fungsi ROUND dalam MySQL untuk memintas bilangan tempat perpuluhan Dalam MySQL, anda boleh menggunakan fungsi ROUND untuk memintas bilangan tempat perpuluhan. Fungsi ROUND membundarkan nombor kepada bilangan tempat perpuluhan yang ditentukan. Berikut akan memperkenalkan anda kepada penggunaan fungsi ROUND secara terperinci dan memberikan contoh kod. Sintaks: ROUND(X,D)X mewakili nombor yang akan dibundarkan dan D mewakili bilangan tempat perpuluhan yang akan dikekalkan. Contoh penggunaan fungsi ROUND untuk memintas bilangan tempat perpuluhan: Katakan terdapat jadual bernama produc

Dalam pembangunan PHP, kita sering menghadapi situasi di mana rentetan Cina perlu dipintas. Secara tradisinya, kami biasanya menggunakan fungsi mb_substr() untuk mengendalikan pemintasan aksara Cina, tetapi prestasinya lemah dan tidak cukup boleh dibaca. Artikel ini akan memperkenalkan beberapa teknik pemintasan rentetan bahasa Cina baharu, marilah kita mengucapkan selamat tinggal kepada mb_substr(), dan meningkatkan kecekapan dan kebolehbacaan kod. Gunakan ungkapan biasa untuk memintas rentetan bahasa Cina Menggunakan ungkapan biasa untuk memintas rentetan bahasa Cina ialah kaedah yang cekap dan ringkas. Kita boleh memadankan aksara Cina melalui ungkapan biasa

Kuasai fungsi pemintasan rentetan dalam bahasa Go ialah bahasa pengaturcaraan yang telah menarik perhatian ramai sejak beberapa tahun kebelakangan ini. Ia mempunyai ciri-ciri kesederhanaan dan kecekapan, dan digemari oleh semakin ramai pembangun. Dalam bahasa Go, pemprosesan rentetan adalah operasi yang sangat biasa, dan fungsi pemintasan rentetan adalah bahagian penting daripadanya. Artikel ini akan menggunakan contoh kod khusus untuk membantu anda menguasai fungsi pemintasan rentetan dalam bahasa Go dengan cepat. 1. Pemintas rentetan asas dalam bahasa Go boleh dipintas melalui indeks Contoh kod adalah seperti berikut: pakej

UniApp ialah rangka kerja pembangunan aplikasi merentas platform berdasarkan Vue.js, yang boleh membangunkan aplikasi dengan cepat untuk kedua-dua platform iOS dan Android. Dalam UniApp, memuat naik dan memangkas imej adalah keperluan biasa. Artikel ini akan memperkenalkan cara untuk melaksanakan muat naik dan pemangkasan imej dalam UniApp, dan memberikan contoh kod yang sepadan. 1. Cara melaksanakan muat naik imej: Gunakan kaedah uni.uploadFile() untuk memuat naik imej. Pertama, anda perlu menetapkan uni.uploa

Cara mengoptimumkan prestasi pemintasan rentetan dan penyambungan dalam pembangunan Java Dalam pembangunan Java harian, pemintasan rentetan dan penyambungan adalah operasi yang sangat biasa. Walau bagaimanapun, disebabkan sifat rentetan yang tidak berubah di Jawa, pemintasan rentetan yang kerap dan operasi penyambungan boleh menyebabkan kemerosotan prestasi. Untuk meningkatkan prestasi pemintasan rentetan dan penyambungan dalam pembangunan Java, kami boleh mengguna pakai strategi pengoptimuman berikut. Penggabungan menggunakan StringBuilder atau StringBuffer: Dalam Java, String

Sebagai bahasa pengaturcaraan berprestasi tinggi, bahasa Go menyediakan pelbagai kaedah dan fungsi untuk operasi dan pemprosesan rentetan. Antaranya, operasi pemintasan tali adalah salah satu fungsi yang sering kami gunakan. Dalam artikel ini, kami akan menyelidiki prinsip pelaksanaan pemintasan rentetan dalam bahasa Go dan menunjukkan proses pelaksanaan melalui contoh kod tertentu. Apakah pemintasan rentetan? Dalam bahasa Go, pemintasan rentetan merujuk kepada operasi memintas subrentetan separa daripada rentetan. Dengan menyatakan kedudukan permulaan dan kedudukan tamat, kita boleh mendapatkan julat yang ditentukan dalam rentetan asal

Sebagai bahasa pengaturcaraan yang digunakan secara meluas, Java telah dibangunkan dan dikemas kini secara berterusan Setiap versi baharu akan memperkenalkan beberapa ciri dan fungsi baharu untuk meningkatkan kecekapan pengekodan pembangun. Salah satu ciri Java12 sebagai versi terkini ialah pengenalan StringAPI baharu, yang menjadikan pemintasan rentetan dan penyambungan lebih mudah dan cekap. Dalam versi sebelumnya, operasi pemintasan rentetan dan penggabungan perlu dilaksanakan dengan memanggil substring() dan pengendali "+", tetapi kaedah ini tidak dapat mengendalikan sejumlah besar operasi rentetan.
