PHP-중국어 병음 초기 문자 도구 클래스
<?<span>php </span><span>/*</span><span>* * 汉字拼音首字母工具类 * 注: 英文的字串:不变返回(包括数字) eg .abc123 => abc123 * 中文字符串:返回拼音首字符 eg. 测试字符串 => CSZFC * 中英混合串: 返回拼音首字符和英文 eg. 我i我j => WIWJ * eg. * $py = new str2PY(); * * $result = $py->getInitials('周杰伦'); * * //获取首字母 * $result = $py->getFirstString('abc'); //A * $resutl = $py->getFirstString("周杰伦"); //Z * <span>*/</span> <span>class</span><span> str2py { </span><span>private</span> <span>$_pinyins</span> = <span>array</span><span>( </span>176161 => 'A', 176197 => 'B', 178193 => 'C', 180238 => 'D', 182234 => 'E', 183162 => 'F', 184193 => 'G', 185254 => 'H', 187247 => 'J', 191166 => 'K', 192172 => 'L', 194232 => 'M', 196195 => 'N', 197182 => 'O', 197190 => 'P', 198218 => 'Q', 200187 => 'R', 200246 => 'S', 203250 => 'T', 205218 => 'W', 206244 => 'X', 209185 => 'Y', 212209 => 'Z',<span> ); </span><span>private</span> <span>$_charset</span> = <span>null</span><span>; </span><span>/*</span><span>* * 构造函数, 指定需要的编码 default: utf-8 * 支持utf-8, gb2312 * * @param unknown_type $charset </span><span>*/</span> <span>public</span> <span>function</span> __construct(<span>$charset</span> = 'utf-8'<span>) { </span><span>$this</span>->_charset = <span>$charset</span><span>; } </span><span>/*</span><span>* * 中文字符串 substr * * @param string $str * @param int $start * @param int $len * @return string </span><span>*/</span> <span>private</span> <span>function</span> _msubstr(<span>$str</span>, <span>$start</span>, <span>$len</span><span>) { </span><span>$start</span> = <span>$start</span> * 2<span>; </span><span>$len</span> = <span>$len</span> * 2<span>; </span><span>$strlen</span> = <span>strlen</span>(<span>$str</span><span>); </span><span>$result</span> = ''<span>; </span><span>for</span> (<span>$i</span> = 0; <span>$i</span> < <span>$strlen</span>; <span>$i</span>++<span>) { </span><span>if</span> (<span>$i</span> >= <span>$start</span> && <span>$i</span> < (<span>$start</span> + <span>$len</span><span>)) { </span><span>if</span> (<span>ord</span>(<span>substr</span>(<span>$str</span>, <span>$i</span>, 1)) > 129<span>) { </span><span>$result</span> .= <span>substr</span>(<span>$str</span>, <span>$i</span>, 2<span>); } </span><span>else</span><span> { </span><span>$result</span> .= <span>substr</span>(<span>$str</span>, <span>$i</span>, 1<span>); } } </span><span>if</span> (<span>ord</span>(<span>substr</span>(<span>$str</span>, <span>$i</span>, 1)) > 129<span>) { </span><span>$i</span>++<span>; } } </span><span>return</span> <span>$result</span><span>; } </span><span>/*</span><span>* * 字符串切分为数组 (汉字或者一个字符为单位) * * @param string $str * @return array </span><span>*/</span> <span>private</span> <span>function</span> _cutWord(<span>$str</span><span>) { </span><span>$words</span> = <span>array</span><span>(); </span><span>while</span> (<span>$str</span> != ""<span>) { </span><span>if</span> (<span>$this</span>->_isAscii(<span>$str</span><span>)) {</span><span>/*</span><span> 非中文 </span><span>*/</span> <span>$words</span>[] = <span>$str</span>[0<span>]; </span><span>$str</span> = <span>substr</span>(<span>$str</span>, <span>strlen</span>(<span>$str</span>[0<span>])); } </span><span>else</span><span> { </span><span>$word</span> = <span>$this</span>->_msubstr(<span>$str</span>, 0, 1<span>); </span><span>$words</span>[] = <span>$word</span><span>; </span><span>$str</span> = <span>substr</span>(<span>$str</span>, <span>strlen</span>(<span>$word</span><span>)); } } </span><span>return</span> <span>$words</span><span>; } </span><span>/*</span><span>* * 判断字符是否是ascii字符 * * @param string $char * @return bool </span><span>*/</span> <span>private</span> <span>function</span> _isAscii(<span>$char</span><span>) { </span><span>return</span> ( <span>ord</span>(<span>substr</span>(<span>$char</span>, 0, 1)) < 160<span> ); } </span><span>/*</span><span>* * 判断字符串前3个字符是否是ascii字符 * * @param string $str * @return bool </span><span>*/</span> <span>private</span> <span>function</span> _isAsciis(<span>$str</span><span>) { </span><span>$len</span> = <span>strlen</span>(<span>$str</span>) >= 3 ? 3 : 2<span>; </span><span>$chars</span> = <span>array</span><span>(); </span><span>for</span> (<span>$i</span> = 1; <span>$i</span> < <span>$len</span> - 1; <span>$i</span>++<span>) { </span><span>$chars</span>[] = <span>$this</span>->_isAscii(<span>$str</span>[<span>$i</span>]) ? 'yes' : 'no'<span>; } </span><span>$result</span> = <span>array_count_values</span>(<span>$chars</span><span>); </span><span>if</span> (<span>empty</span>(<span>$result</span>['no'<span>])) { </span><span>return</span> <span>true</span><span>; } </span><span>return</span> <span>false</span><span>; } </span><span>/*</span><span>* * 获取中文字串的拼音首字符 * * @param string $str * @return string </span><span>*/</span> <span>public</span> <span>function</span> getInitials(<span>$str</span><span>) { </span><span>if</span> (<span>empty</span>(<span>$str</span><span>)) </span><span>return</span> ''<span>; </span><span>if</span> (<span>$this</span>->_isAscii(<span>$str</span>[0]) && <span>$this</span>->_isAsciis(<span>$str</span><span>)) { </span><span>return</span> <span>$str</span><span>; } </span><span>$result</span> = <span>array</span><span>(); </span><span>if</span> (<span>$this</span>->_charset == 'utf-8'<span>) { </span><span>$str</span> = <span>iconv</span>('utf-8', 'gb2312', <span>$str</span><span>); } </span><span>$words</span> = <span>$this</span>->_cutWord(<span>$str</span><span>); </span><span>foreach</span> (<span>$words</span> <span>as</span> <span>$word</span><span>) { </span><span>if</span> (<span>$this</span>->_isAscii(<span>$word</span><span>)) {</span><span>/*</span><span> 非中文 </span><span>*/</span> <span>$result</span>[] = <span>$word</span><span>; </span><span>continue</span><span>; } </span><span>$code</span> = <span>ord</span>(<span>substr</span>(<span>$word</span>, 0, 1)) * 1000 + <span>ord</span>(<span>substr</span>(<span>$word</span>, 1, 1<span>)); </span><span>/*</span><span> 获取拼音首字母A--Z </span><span>*/</span> <span>if</span> ((<span>$i</span> = <span>$this</span>->_search(<span>$code</span>)) != -1<span>) { </span><span>$result</span>[] = <span>$this</span>->_pinyins[<span>$i</span><span>]; } } </span><span>return</span> <span>strtoupper</span>(<span>implode</span>('', <span>$result</span><span>)); } </span><span>/*</span><span>* * 20140624 wangtianbao 获取首字母 * @param string $str * @return string </span><span>*/</span> <span>public</span> <span>function</span> getFirstString(<span>$str</span><span>) { </span><span>//</span><span>先把中文转换成字母</span> <span>$new_string</span> = <span>$this</span>->getInitials(<span>$str</span><span>); </span><span>if</span> (<span>empty</span>(<span>$new_string</span><span>)) { </span><span>return</span> ''<span>; } </span><span>else</span><span> { </span><span>return</span> <span>strtoupper</span>(<span>substr</span>(<span>$new_string</span>, 0, 1<span>)); } } </span><span>private</span> <span>function</span> _getChar(<span>$ascii</span><span>) { </span><span>if</span> (<span>$ascii</span> >= 48 && <span>$ascii</span> <= 57<span>) { </span><span>return</span> <span>chr</span>(<span>$ascii</span>); <span>/*</span><span> 数字 </span><span>*/</span><span> } </span><span>elseif</span> (<span>$ascii</span> >= 65 && <span>$ascii</span> <= 90<span>) { </span><span>return</span> <span>chr</span>(<span>$ascii</span>); <span>/*</span><span> A--Z </span><span>*/</span><span> } </span><span>elseif</span> (<span>$ascii</span> >= 97 && <span>$ascii</span> <= 122<span>) { </span><span>return</span> <span>chr</span>(<span>$ascii</span> - 32); <span>/*</span><span> a--z </span><span>*/</span><span> } </span><span>else</span><span> { </span><span>return</span> '-'; <span>/*</span><span> 其他 </span><span>*/</span><span> } } </span><span>/*</span><span>* * 查找需要的汉字内码(gb2312) 对应的拼音字符( 二分法 ) * * @param int $code * @return int </span><span>*/</span> <span>private</span> <span>function</span> _search(<span>$code</span><span>) { </span><span>$data</span> = <span>array_keys</span>(<span>$this</span>-><span>_pinyins); </span><span>$lower</span> = 0<span>; </span><span>$upper</span> = <span>sizeof</span>(<span>$data</span>) - 1<span>; </span><span>$middle</span> = (int) <span>round</span>((<span>$lower</span> + <span>$upper</span>) / 2<span>); </span><span>if</span> (<span>$code</span> < <span>$data</span>[0<span>]) </span><span>return</span> -1<span>; </span><span>for</span><span> (;;) { </span><span>if</span> (<span>$lower</span> > <span>$upper</span><span>) { </span><span>return</span> <span>$data</span>[<span>$lower</span> - 1<span>]; } </span><span>$tmp</span> = (int) <span>round</span>((<span>$lower</span> + <span>$upper</span>) / 2<span>); </span><span>if</span> (!<span>isset</span>(<span>$data</span>[<span>$tmp</span><span>])) { </span><span>return</span> <span>$data</span>[<span>$middle</span><span>]; } </span><span>else</span><span> { </span><span>$middle</span> = <span>$tmp</span><span>; } </span><span>if</span> (<span>$data</span>[<span>$middle</span>] < <span>$code</span><span>) { </span><span>$lower</span> = (int) <span>$middle</span> + 1<span>; } </span><span>else</span> <span>if</span> (<span>$data</span>[<span>$middle</span>] == <span>$code</span><span>) { </span><span>return</span> <span>$data</span>[<span>$middle</span><span>]; } </span><span>else</span><span> { </span><span>$upper</span> = (int) <span>$middle</span> - 1<span>; } } } }</span>
위 내용은 관련 내용을 포함하여 php-중국어 병음 이니셜 도구 클래스를 소개한 내용으로, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











많은 사용자들이 스마트 시계를 선택할 때 Huawei 브랜드를 선택하게 됩니다. 그 중 Huawei GT3pro와 GT4가 가장 인기 있는 선택입니다. 두 제품의 차이점을 궁금해하는 사용자가 많습니다. Huawei GT3pro와 GT4의 차이점은 무엇입니까? 1. 외관 GT4: 46mm와 41mm, 재질은 유리 거울 + 스테인레스 스틸 본체 + 고해상도 섬유 후면 쉘입니다. GT3pro: 46.6mm 및 42.9mm, 재질은 사파이어 유리 + 티타늄 본체/세라믹 본체 + 세라믹 백 쉘입니다. 2. 건강한 GT4: 최신 Huawei Truseen5.5+ 알고리즘을 사용하면 결과가 더 정확해집니다. GT3pro: ECG 심전도, 혈관 및 안전성 추가

Java의 String.valueOf() 함수를 사용하여 기본 데이터 유형을 문자열로 변환 Java 개발에서 기본 데이터 유형을 문자열로 변환해야 할 때 일반적인 방법은 String 클래스의 valueOf() 함수를 사용하는 것입니다. 이 함수는 기본 데이터 유형의 매개변수를 허용하고 해당 문자열 표현을 반환할 수 있습니다. 이 기사에서는 기본 데이터 유형 변환을 위해 String.valueOf() 함수를 사용하는 방법을 살펴보고 다음과 같은 몇 가지 코드 예제를 제공합니다.

C 언어에서 return의 사용법은 다음과 같습니다. 1. 반환 값 유형이 void인 함수의 경우 return 문을 사용하여 함수 실행을 조기에 종료할 수 있습니다. 2. 반환 값 유형이 void가 아닌 함수의 경우 return 문은 함수 실행을 종료하는 것입니다. 결과는 호출자에게 반환됩니다. 3. 함수 실행을 조기에 종료합니다. 함수 내부에서는 return 문을 사용하여 함수 실행을 조기에 종료할 수 있습니다. 함수가 값을 반환하지 않는 경우.

char 배열을 문자열로 변환하는 방법: 할당을 통해 달성할 수 있습니다. char 배열이 문자열에 직접 값을 할당하고 실행하도록 하려면 {char a[]=" abc d\0efg ";string s=a;} 구문을 사용합니다. 변환을 완료하는 코드입니다.

Windows 11에서 캡처 도구가 작동하지 않는 이유 문제의 근본 원인을 이해하면 올바른 솔루션을 찾는 데 도움이 될 수 있습니다. 캡처 도구가 제대로 작동하지 않는 주요 이유는 다음과 같습니다. 초점 도우미가 켜져 있습니다. 이렇게 하면 캡처 도구가 열리지 않습니다. 손상된 응용 프로그램: 캡처 도구가 실행 시 충돌하는 경우 응용 프로그램이 손상되었을 수 있습니다. 오래된 그래픽 드라이버: 호환되지 않는 드라이버가 캡처 도구를 방해할 수 있습니다. 다른 응용 프로그램의 간섭: 실행 중인 다른 응용 프로그램이 캡처 도구와 충돌할 수 있습니다. 인증서가 만료되었습니다. 업그레이드 프로세스 중 오류로 인해 이 문제가 발생할 수 있습니다. 이 문제는 대부분의 사용자에게 적합하며 특별한 기술 지식이 필요하지 않습니다. 1. Windows 및 Microsoft Store 앱 업데이트

소스 코드: publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}}# 출력 위 코드의 출력은 간단히 결론을 내릴 수 있습니다. return은 finally 전에 실행됩니다. 바이트코드 수준에서 무슨 일이 일어나는지 살펴보겠습니다. 다음은 case1 메소드의 바이트코드 일부를 가로채서 소스 코드를 비교하여 각 명령어의 의미를 주석으로 표시합니다.

Java의 String.replace() 함수를 사용하여 문자열의 문자(문자열) 바꾸기 Java에서 문자열은 불변 객체입니다. 즉, 문자열 객체가 생성되면 해당 값을 수정할 수 없습니다. 그러나 문자열에서 특정 문자나 문자열을 바꿔야 하는 상황이 발생할 수 있습니다. 이때 Java의 String 클래스에 있는 replacement() 메소드를 사용하여 문자열 교체를 구현할 수 있습니다. String 클래스의 replacement() 메소드에는 두 가지 유형이 있습니다.

안녕하세요 여러분, 오늘은 Java: String에 대한 기본 지식을 여러분과 공유하겠습니다. String 클래스의 중요성은 말할 필요도 없이 우리 백엔드 개발에서 가장 많이 사용되는 클래스라고 할 수 있으므로 이에 대해 이야기할 필요가 있다.
