php教程 php手册 实用技巧:PHP截取中文字符串的问题

实用技巧:PHP截取中文字符串的问题

Jun 21, 2016 am 09:10 AM
start title unset

技巧|问题|中文|字符串

以下代码试用于GB2312编码,截取中文字符串是PHP中一个头疼的问题,解决方法是根据值是否大于等于128来判断是否是双字节字符,以避免出现乱码的情况。但中英文混合、特殊符号等问题总是存在,现在写一个比较全面的,仅供参考:

程序说明:

1. len 参数以中文字符为标准,1len等于2个英文字符,为了形式上好看些

2. 如果将magic参数设为false,则中文和英文同等看待,取绝对的字符数

3. 特别适用于用htmlspecialchars()进行过编码的字符串

4. 能正确处理GB2312中实体字符模式(𖰰)

程序代码:

<ccid_code>function FSubstr($title,$start,$len="",$magic=true) {/**  *  powered by Smartpig  *  mailto:d.einstein@263.net  */  $length = 0;if($len == "") $len = strlen($title);//判断起始为不正确位置if($start > 0){  $cnum = 0;  for($i=0;$i= 128) $cnum ++;  }  if($cnum%2 != 0) $start--;    unset($cnum);}if(strlen($title)?) if(substr($title,$i,4)="=" ?) ?&?) if($cur="=" $cur="substr($title,$i,1);">=128)   {    $cstep = 2;    $length += 2;    $i += 1;    $realnum ++;    if($magic)    {     $blen ++;     $ctype = 1;    }   }else{    $cstep = 1;    $length +=1;    $realnum ++;    if($magic)    {     $alen++;    }   }  }    if($magic)  {   if(($blen*2+$alen) == ($len*2)) break;   if(($blen*2+$alen) == ($len*2+1))   {    if($ctype == 1)    {     $length -= $cstep;     break;    }else{     break;    }   }  }else{   if($realnum == $len) break;  }}unset($cur);unset($alen);unset($blen);unset($realnum);unset($ctype);unset($cstep);return substr($title,$start,$length);}</ccid_code>
로그인 후 복사



본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

docker start를 시작할 수 없으면 어떻게 해야 합니까? docker start를 시작할 수 없으면 어떻게 해야 합니까? Oct 21, 2022 pm 03:43 PM

docker 시작 실패에 대한 해결 방법: 1. 실행 상태를 확인한 후 "echo 3 &gt; /proc/sys/vm/drop_caches" 명령을 통해 점유된 메모리를 해제합니다. 2. "$netstat -nltp|grep .. . " 명령을 사용하여 해당 포트가 이미 점유되어 있는지 확인합니다. 온라인 접속 후 점유된 것으로 확인되면 사용 가능한 포트로 변경한 후 다시 시작하세요.

제목이 무슨 뜻이야? 제목이 무슨 뜻이야? Aug 04, 2023 am 11:18 AM

제목은 웹 페이지의 제목을 정의하는 의미로, 태그 내에 위치하며 브라우저의 제목 표시줄에 표시되는 텍스트입니다. 제목은 웹 페이지의 검색 엔진 최적화 및 사용자 경험에 매우 중요합니다. HTML 웹 페이지를 작성할 때 더 많은 사용자가 클릭하고 탐색하도록 유도하려면 관련 키워드와 매력적인 설명을 사용하여 제목 요소를 정의하는 데 주의를 기울여야 합니다.

노드 시작이 오류를 보고하는 경우 수행할 작업 노드 시작이 오류를 보고하는 경우 수행할 작업 Dec 29, 2022 pm 01:55 PM

노드 시작 오류 해결 방법: 1. 터미널에서 직접 "node xx.js"를 실행합니다. 2. 시작 시작 항목 "scripts"를 추가합니다. ,"start":"node service.js"}"; 3. "npm start"를 다시 실행합니다.

HTML에서 제목의 의미는 무엇입니까 HTML에서 제목의 의미는 무엇입니까 Mar 06, 2024 am 09:53 AM

HTML의 제목은 웹페이지의 제목 태그를 표시하여 뷰어가 현재 페이지의 주요 내용을 알 수 있도록 하므로 각 웹페이지에는 별도의 제목이 있어야 합니다.

Java 스레드에서 시작 메소드와 실행 메소드를 사용하는 방법 Java 스레드에서 시작 메소드와 실행 메소드를 사용하는 방법 Apr 20, 2023 am 08:58 AM

start 메소드 및 run 메소드 $start()$ 메소드는 스레드를 시작하는 데 사용됩니다. 이때 스레드는 준비(실행 가능) 상태이며 $cpu$ 시간 조각을 얻으면 실행되지 않습니다. run()$ 메소드가 실행되기 시작합니다. $run()$ 메소드를 직접 호출하는 것은 본질적으로 현재 스레드에서 실행되는 클래스의 메소드만 호출하므로 $start()$ 메소드를 사용하여 $run()$를 호출해야만 달성할 수 있습니다. 방법. 진정한 멀티스레딩. 샘플 코드@Slf4j(topic="c.Test4")publicclassTest4{publicstaticvoidmain(Strin

Java 스레드에서 시작과 실행의 차이점은 무엇입니까 Java 스레드에서 시작과 실행의 차이점은 무엇입니까 Apr 20, 2023 pm 12:37 PM

publicclassTest1extendsThread{@Overridepublicvoidrun(){while(true){System.out.println(Thread.currentThread().getName());}} publicstaticvoidmain(String[]args){Test1test1=newTest1();test1.run() ;//출력 결과 maintest1.start();//출력 결과 Thread-0}}1.startstart는

설정되지 않은 함수를 사용하여 PHP에서 배열 요소를 삭제하는 방법 설정되지 않은 함수를 사용하여 PHP에서 배열 요소를 삭제하는 방법 Jun 26, 2023 am 11:29 AM

PHP는 많은 유용한 기능을 제공하는 널리 사용되는 서버 측 프로그래밍 언어이며 그 중 하나는 배열 조작입니다. PHP 배열을 사용하다 보면 가끔 요소를 삭제해야 하는 경우가 있는데, 이런 경우에는 unset() 함수를 사용하면 됩니다. unset() 함수는 PHP에서 변수를 삭제하는 데 사용되는 함수이며 배열의 요소를 삭제하는 데 사용할 수 있습니다. 구문은 다음과 같습니다: unset(array$array[,mixed$key1[,mixed$key2[,mixed)

PHP에서 session_start 함수를 사용하여 세션을 시작하는 방법 PHP에서 session_start 함수를 사용하여 세션을 시작하는 방법 Jun 26, 2023 pm 01:33 PM

session_start() 함수는 PHP에서 세션을 여는 함수 중 하나입니다. 세션은 웹 개발에서 매우 일반적인 기술이며, 세션의 기본은 사용자가 웹 사이트를 방문할 때 고유한 세션 ID를 할당하고, 이 세션 ID를 사용하여 후속 방문에서 사용자를 식별하는 것입니다. 세션은 사용자의 로그인 상태, 장바구니 내용, 기타 사용자 정보를 저장하는 데 사용될 수 있으며 웹사이트의 일부 기능에 대한 권한 제어를 구현하는 데에도 사용될 수 있습니다. PHP에서 세션을 여는 방법은 매우 간단합니다. sess를 사용하면 됩니다.

See all articles