Rumah pembangunan bahagian belakang tutorial php php中截取中文字符串的代码小结_PHP

php中截取中文字符串的代码小结_PHP

Jun 01, 2016 pm 12:14 PM
memintas

字符串截取是一个非常常见的编程任务,而往往带中文的字符串截取会经常用到。虽然不难,但是自己写函数实现又耗费时间,这里介绍一个比较好用的字符串截取函数,能够胜任基本的需求了。

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);
?>

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Penjelasan terperinci tentang kaedah pemintasan rentetan dalam bahasa Go Penjelasan terperinci tentang kaedah pemintasan rentetan dalam bahasa Go Mar 13, 2024 am 08:03 AM

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 untuk memintas tempat perpuluhan dalam MySQL Cara menggunakan fungsi ROUND untuk memintas tempat perpuluhan dalam MySQL Jul 13, 2023 pm 09:21 PM

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

Kemahiran pemintasan rentetan PHP Cina: Ucapkan selamat tinggal kepada mb_substr() Kemahiran pemintasan rentetan PHP Cina: Ucapkan selamat tinggal kepada mb_substr() Mar 15, 2024 pm 12:18 PM

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 dengan cepat dalam bahasa Go Kuasai fungsi pemintasan rentetan dengan cepat dalam bahasa Go Mar 12, 2024 pm 06:15 PM

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

Cara UniApp melaksanakan muat naik dan pemangkasan imej Cara UniApp melaksanakan muat naik dan pemangkasan imej Jul 06, 2023 am 10:01 AM

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

Bagaimana untuk mengoptimumkan prestasi pemintasan rentetan dan penyambungan dalam pembangunan Java Bagaimana untuk mengoptimumkan prestasi pemintasan rentetan dan penyambungan dalam pembangunan Java Jun 29, 2023 pm 06:04 PM

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

Pemahaman mendalam tentang prinsip pelaksanaan pemintasan rentetan dalam bahasa Go Pemahaman mendalam tentang prinsip pelaksanaan pemintasan rentetan dalam bahasa Go Mar 12, 2024 pm 06:27 PM

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

Ciri baharu dalam Java 12: Cara menggunakan API String baharu untuk memintas dan menggabungkan rentetan Ciri baharu dalam Java 12: Cara menggunakan API String baharu untuk memintas dan menggabungkan rentetan Jul 31, 2023 pm 12:55 PM

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.

See all articles