日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php中英文截取字符串长度,PHP截取字符串长度(中英文混合字符串)_PHP教程

發布時間:2024/10/8 php 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php中英文截取字符串长度,PHP截取字符串长度(中英文混合字符串)_PHP教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

function utf8_substr( $str , $start , $length=null ){

// 先正常截取一遍.

$res = substr( $str , $start , $length );

$strlen = strlen( $str );

/* 接著判斷頭尾各6字節是否完整(不殘缺) */

// 如果參數start是正數

if ( $start >= 0 ){

// 往前再截取大約6字節

$next_start = $start + $length; // 初始位置

$next_len = $next_start + 6 <= $strlen ? 6 : $strlen - $next_start;

$next_segm = substr( $str , $next_start , $next_len );

// 如果第1字節就不是 完整字符的首字節, 再往后截取大約6字節

$prev_start = $start - 6 > 0 ? $start - 6 : 0;

$prev_segm = substr( $str , $prev_start , $start - $prev_start );

}

// start是負數

else{

// 往前再截取大約6字節

$next_start = $strlen + $start + $length; // 初始位置

$next_len = $next_start + 6 <= $strlen ? 6 : $strlen - $next_start;

$next_segm = substr( $str , $next_start , $next_len );

// 如果第1字節就不是 完整字符的首字節, 再往后截取大約6字節.

$start = $strlen + $start;

$prev_start = $start - 6 > 0 ? $start - 6 : 0;

$prev_segm = substr( $str , $prev_start , $start - $prev_start );

}

// 判斷前6字節是否符合utf8規則

if ( preg_match( '@^([x80-xBF]{0,5})[xC0-xFD]?@' , $next_segm , $bytes ) ){

if ( !empty( $bytes[1] ) ){

$bytes = $bytes[1];

$res .= $bytes;

}

}

// 判斷后6字節是否符合utf8規則

$ord0 = ord( $res[0] );

if ( 128 <= $ord0 && 191 >= $ord0 ){

// 往后截取 , 并加在res的前面.

if ( preg_match( '@[xC0-xFD][x80-xBF]{0,5}$@' , $prev_segm , $bytes ) ){

if ( !empty( $bytes[0] ) ){

$bytes = $bytes[0];

$res = $bytes . $res;

}

}

}

return $res;

}

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的php中英文截取字符串长度,PHP截取字符串长度(中英文混合字符串)_PHP教程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。