php對中英文字符串進行截取,利用php怎么對中英文混合的字符串進行截取

利用php怎么對中英文混合的字符串進行截取

發布時間:2021-01-04 15:31:24

來源:億速云

閱讀:103

作者:Leah

利用php怎么對中英文混合的字符串進行截取?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

php 截取中應為字符串,就不必再用substr或者mb_substr//截取想這樣的字符串

a李三

利用ASCII/**

*

*?中英混合的字符串截取

*?@param?unknown_type?$sourcestr

*?@param?unknown_type?$cutlength

*/

function?assoc_substr($sourcestr,?$cutlength)?{

$returnstr?=?'';

$i?=?0;

$n?=?0;

$str_length?=?strlen?(?$sourcestr?);?//字符串的字節數

while?(?($n?

$temp_str?=?substr?(?$sourcestr,?$i,?1?);

$ascnum?=?Ord?(?$temp_str?);?//得到字符串中第$i位字符的ascii碼

if?($ascnum?>=?224)?{//如果ASCII位高與224,

$returnstr?=?$returnstr?.?substr?(?$sourcestr,?$i,?3?);?//根據UTF-8編碼規范,將3個連續的字符計為單個字符

$i?=?$i?+?3;?//實際Byte計為3

$n?++;?//字串長度計1

}?elseif?($ascnum?>=?192){?//如果ASCII位高與192,

$returnstr?=?$returnstr?.?substr?(?$sourcestr,?$i,?2?);?//根據UTF-8編碼規范,將2個連續的字符計為單個字符

$i?=?$i?+?2;?//實際Byte計為2

$n?++;?//字串長度計1

}?elseif?($ascnum?>=?65?&&?$ascnum?<=?90)?{//如果是大寫字母,

$returnstr?=?$returnstr?.?substr?(?$sourcestr,?$i,?1?);

$i?=?$i?+?1;?//實際的Byte數仍計1個

$n?++;?//但考慮整體美觀,大寫字母計成一個高位字符

}elseif?($ascnum?>=?97?&&?$ascnum?<=?122)?{

$returnstr?=?$returnstr?.?substr?(?$sourcestr,?$i,?1?);

$i?=?$i?+?1;?//實際的Byte數仍計1個

$n?++;?//但考慮整體美觀,大寫字母計成一個高位字符

}?else?{//其他情況下,半角標點符號,

$returnstr?=?$returnstr?.?substr?(?$sourcestr,?$i,?1?);

$i?=?$i?+?1;

$n?=?$n?+?0.5;

}

}

return?$returnstr;

}

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532815.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532815.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532815.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux查找命令find、loacte、whereis、which、type梳理

Linux查找命令find、loacte、whereis、which、type梳理 Linux操作系統中有5種常用的查找命令&#xff1a;find&#xff0c;locate&#xff0c;whereis&#xff0c;which&#xff0c;type&#xff0c;他們分別用于查找不同的東西&#xff0c;本文將就他們各自的功能進行一下梳理…

php數據關系圖,如何利用navicat查看數據表的ER關系圖

文章背景&#xff1a;(相關推薦&#xff1a;navicat)由于工作需要&#xff0c;現在要分析一個數據庫&#xff0c;然后查看各個表之間的關系&#xff0c;所以需要查看表與表之間的關系圖&#xff0c;專業術語叫做ER關系圖。默認情況下&#xff0c;Navicat顯示的界面是這樣的&…

Linux軟鏈接的使用

Linux軟鏈接的使用 轉自&#xff1a;https://www.cnblogs.com/sueyyyy/p/10985443.html&#xff0c;本博文僅對原博排版稍微優化。 更為細致的硬鏈接、軟鏈接的介紹可參考&#xff1a;Linux中的硬鏈接和軟鏈接 另外&#xff0c;提供筆者對軟連接的一個最簡單的理解&#xff…

oracle死鎖優化,Oracle性能優化之LockContention(轉)

1、概念DML事務使用row-level locks,查詢不會鎖定數據。鎖有兩種模式&#xff1a;exlusive、share。鎖的類型&#xff1a;? DML or data locks:– Table-level locks(TM)– Row-level locks(TX)? DDL or dictionary locks一個transaction至少獲得兩個鎖&#xff1a;一個共享的…

Linux中g++與gcc的區別

轉自&#xff1a;https://blog.csdn.net/bit_clearoff/article/details/53965514 Windows中我們常用vs來編譯編寫好的C和C代碼&#xff1b;vs把編輯器&#xff0c;編譯器和調試器等工具都集成在這一款工具中&#xff0c;在Linux下我們能用什么工具來編譯所編寫好的代碼呢&#…

linux系統可以用迅雷嗎,在Linux系統下使用wine運行迅雷5的方法

在Linux系統下使用wine運行迅雷5的方法一、下載ies4linux去 http://www.tatanka.com.br/ies4linux/page/Installation 下載ies4linux的文件包(目前版本為2.99)&#xff0c;然后解壓縮。注意&#xff1a;這個網站被大陸和諧了&#xff0c;需要跳墻。至于怎么跳&#xff0c;諸位就…

從C源代碼到可執行文件的四個過程:預處理、編譯、匯編、鏈接

從C源代碼到可執行文件的四個過程&#xff1a;預處理、編譯、匯編、鏈接 總覽 我們將在Linux操作系統中&#xff0c;以C語言的Hello World程序為例&#xff0c;用gcc編譯器分步執行這四個步驟。 我們有再熟悉不過的HelloWorld程序&#xff0c;hello.c&#xff1a; #include …

uboot引導linux內核,u-boot啟動內核的幾種方式

1.uboot啟動內核的代碼縮減如下&#xff1a;s getenv ("bootcmd");debug ("### main_loop: bootcmd\"%s\"\n", s ? s : "");if (bootdelay > 0 && s && !abortboot (bootdelay)){run_command (s, 0);}2.假設boot…

跟我一起寫makefile: 概述、介紹、規則

跟我一起寫makefile 概述、介紹、規則 轉自&#xff1a;https://seisman.github.io/how-to-write-makefile/rules.html 概述 什么是makefile&#xff1f;或許很多Windows的程序員都不知道這個東西&#xff0c;因為那些Windows的集成開發環境&#xff08;integrated developm…

linux內核中cent文件夾,Centos 中如何快速定制二進制的內核 RPM 包

1、rpm 制作前的環境準備&#xff1a;yum install -y ncurses-devel qt-devel rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-Embed xmlto audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel newt-devel python-devel zlib-devel bc2、準…

TabError- inconsistent use of tabs and spaces in indentation 查驗及解決方法

TabError: inconsistent use of tabs and spaces in indentation 查驗及解決方法 報錯代碼 def eccv16(pretrainedTrue):model ECCVGenerator()if(pretrained):import torch.utils.model_zoo as model_zoomodel.load_state_dict(torch.load(/home/ps/.cache/torch/hub/check…

linux用xshell編輯文件,Linux遠程管理器xshell和xftp使用教程

Xshell 是一個強大的安全終端模擬軟件&#xff0c;它支持SSH1, SSH2, 以及Microsoft Windows 平臺的TELNET 協議。Xftp 是一個基于 MS windows 平臺的功能強大的SFTP、FTP 文件傳輸軟件。安裝完畢后打開xshell設置網站帳號信息設置主機信息設置服務器帳號設置字符集編碼設置好了…

strict=False 但還是size mismatch for []: copying a param with shape [] from checkpoint,the shape in cur

strictFalse 但還是size mismatch for []: copying a param with shape [] from checkpoint,the shape in cur 問題 我們知道通過 model.load_state_dict(state_dict, strictFalse)可以暫且忽略掉模型和參數文件中不匹配的參數&#xff0c;先將正常匹配的參數從文件中載入模…

linux中權限765啥意思,Linux中的文件權限

Linux系統中的每一個文件都與多種權限類型相關聯。在這些權限中&#xff0c;我們主要和三類權限打交道&#xff1a;用戶(user)、用戶組(group)和其他用戶(others)。用戶是文件的所有者&#xff1b;用戶組是指和文件所有者在同一組的其他多個用戶的集合&#xff1b;其他用戶是除…

CV中的色彩空間大全

HSI、HSV、RGB、CMY、CMYK、HSL、HSB、Ycc、XYZ、Lab、YUV顏色模型 HSV顏色空間 HSV(hue,saturation,value)顏色空間的模型對應于圓柱坐標系中的一個圓錐形子集&#xff0c;圓錐的頂面對應于V1. 它包含RGB模型中的R1&#xff0c;G1&#xff0c;B1 三個面&#xff0c;所代表的…

linux 系統調用時怎么知道當前上下文屬于那個進程,linux – 編寫系統調用來計算進程的上下文切換...

如果您的系統調用只應報告統計信息,則可以使用內核中已有的上下文切換計數代碼.struct rusage {...long ru_nvcsw; /* voluntary context switches */long ru_nivcsw; /* involuntary context switches */};您可以通過運行來嘗試&#xff1a;$/usr/bin/time -v /bin/ls -R....V…

linux串口緩沖區的大小,linux-----------串口設置緩沖器的大小

轉自:http://stackoverflow.com/questions/10815811/linux-serial-port-reading-can-i-change-size-of-input-bufferYou want to use the serial IOCTL TIOCSSERIAL which allows changing both receive buffer depth and send buffer depth (among other things). The maximum…

FLOPs、FLOPS、Params的含義及PyTorch中的計算方法

FLOPs、FLOPS、Params的含義及PyTorch中的計算方法 含義解釋 FLOPS&#xff1a;注意全大寫&#xff0c;是floating point operations per second的縮寫&#xff08;這里的大S表示second秒&#xff09;&#xff0c;表示每秒浮點運算次數&#xff0c;理解為計算速度。是一個衡量…

設置中文linux輸入ubuntu,Linux_ubuntu怎么設置成中文?ubuntu中文設置圖文方法,  很多朋友安裝ubuntu后,發 - phpStudy...

ubuntu怎么設置成中文&#xff1f;ubuntu中文設置圖文方法很多朋友安裝ubuntu后&#xff0c;發現都是英文&#xff0c;看不懂要怎么辦?其實ubuntu是可以設置成中文的&#xff0c;下文小編就為大家帶來ubuntu中文的設置方法&#xff0c;一起去看下設置方法吧。ubuntu中文設置方…

科普 | 單精度、雙精度、多精度和混合精度計算的區別是什么?

科普 | 單精度、雙精度、多精度和混合精度計算的區別是什么? 轉自&#xff1a;https://zhuanlan.zhihu.com/p/93812784 我們提到圓周率 π 的時候&#xff0c;它有很多種表達方式&#xff0c;既可以用數學常數3.14159表示&#xff0c;也可以用一長串1和0的二進制長串表示。 …