麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > PHP > 正文

關于PHP截取字符串的一些方法總結

2020-03-22 19:51:17
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了關于PHP截取字符串的一些方法總結,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

現在很多情況下,需要用到截取字符串功能,不夠由于gb2312與utf-8的編碼問題,需要區別對待,下面是具體的實現方法并從一些比較成熟的系統中扒下的代碼。

1、UTF-8、GB2312都支持的漢字截取函數

 ?php 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 $strlen; $i++) if($i =$start $i ($start+$sublen)) 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) $strlen ) $tmpstr.= … return $tmpstr; $str = abcd需要截取的字符串 echo cut_str($str, 8, 0, gb2312 ? 

2、截取utf8編碼的多字節字符串

 ?php //截取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、截取GB2312中文字符串

 ?php //截取中文字符串 function mysubstr($str, $start, $len) { $tmpstr = $strlen = $start + $len; for($i = 0; $i $strlen; $i++) { if(ord(substr($str, $i, 1)) 0xa0) { $tmpstr .= substr($str, $i, 2); $i++; } else $tmpstr .= substr($str, $i, 1); return $tmpstr; ? 

4、BugFree 的字符截取函數

 ?php * @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()) * @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) = $Length ) return $String; else $I = 0; while ($I $Length) $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 = //www.jb51.net — 簡單、精彩、通用 $Length = 18 $Append = false; echo sysSubStr($String,$Length,$Append); ? 

dedecms中的截取代碼
這是從dedecms直接拿的代碼,大家可以稍作修改即可。

//中文截取2,單字節截取模式 //如果是request的內容,必須使用這個函數 function cn_substrR($str,$slen,$startdd=0) $str = cn_substr(stripslashes($str),$slen,$startdd); return addslashes($str); //中文截取2,單字節截取模式 function cn_substr($str,$slen,$startdd=0) global $cfg_soft_lang; if($cfg_soft_lang== utf-8 ) return cn_substr_utf8($str,$slen,$startdd); $restr = $c = $str_len = strlen($str); if($str_len $startdd+1) return if($str_len $startdd + $slen || $slen==0) $slen = $str_len - $startdd; $enddd = $startdd + $slen - 1; for($i=0;$i $str_len;$i++) if($startdd==0) $restr .= $c; else if($i $startdd) $restr .= $c; if(ord($str[$i]) 0x80) if($str_len $i+1) $c = $str[$i].$str[$i+1]; $i++; else $c = $str[$i]; if($i = $enddd) if(strlen($restr)+strlen($c) $slen) break; else $restr .= $c; break; return $restr; //utf-8中文截取,單字節截取模式 function cn_substr_utf8($str, $length, $start=0) if(strlen($str) $start+1) return preg_match_all( /./su , $str, $ar); $str = $tstr = //為了兼容mysql4.1以下版本,與數據庫varchar一致,這里使用按字節截取 for($i=0; isset($ar[0][$i]); $i++) if(strlen($tstr) $start) $tstr .= $ar[0][$i]; else if(strlen($str) $length + strlen($ar[0][$i]) ) $str .= $ar[0][$i]; else break; return $str; }

phpcms中的字符串截取代碼:

function str_cut($string, $length, $dot = ... ) $strlen = strlen($string); if($strlen = $length) return $string; $string = str_replace(array( , , , , “ , ” , — , , , · , … ), array( , , , , “ , ” , — , , , · , … ), $string); $strcut = if(strtolower(CHARSET) == utf-8 ) $n = $tn = $noc = 0; while($n $strlen) $t = ord($string[$n]); if($t == 9 || $t == 10 || (32 = $t $t = 126)) { $tn = 1; $n++; $noc++; } elseif(194 = $t $t = 223) { $tn = 2; $n += 2; $noc += 2; } elseif(224 = $t $t 239) { $tn = 3; $n += 3; $noc += 2; } elseif(240 = $t $t = 247) { $tn = 4; $n += 4; $noc += 2; } elseif(248 = $t $t = 251) { $tn = 5; $n += 5; $noc += 2; } elseif($t == 252 || $t == 253) { $tn = 6; $n += 6; $noc += 2; } else { $n++; if($noc = $length) break; if($noc $length) $n -= $tn; $strcut = substr($string, 0, $n); else $dotlen = strlen($dot); $maxi = $length - $dotlen - 1; for($i = 0; $i $maxi; $i++) $strcut .= ord($string[$i]) 127 ? $string[$i].$string[++$i] : $string[$i]; $strcut = str_replace(array( , , , , ), array( , , , , ), $strcut); return $strcut.$dot; }

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !

相關推薦:

關于PHP求多項式導數的函數代碼

關于PHP操作文件的基本函數的使用

以上就是關于PHP截取字符串的一些方法總結的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 91精品动漫在线观看 | 欧美日韩网站在线观看 | 5xx免费看 | 国产亚洲精品久久午夜玫瑰园 | 久久国产乱子伦精品 | 国产精品久久久久久久久久三级 | 羞羞答答影院 | 日日草日日干 | 精品亚洲va在线va天堂资源站 | 欧美精品一区二区久久 | 国产精品欧美久久久久一区二区 | 久久久久久久久久网站 | 孕妇体内谢精满日本电影 | 99热草 | 高清一区二区在线观看 | 成人男女激情免费视频 | 超碰97在线人人 | av在线看网站 | www.com超碰 | 黄色片网站免费观看 | 成人在线观看免费爱爱 | 99精品视频在线免费观看 | 成人毛片100免费观看 | 国产精品久久久久久婷婷天堂 | 久久性生活免费视频 | 韩国一大片a毛片 | 午夜视频你懂的 | 国产视频在线免费观看 | 色人久久 | 成熟女人特级毛片www免费 | 国产在线精品一区二区不卡 | 一级看片免费视频 | 九九热在线视频免费观看 | 成熟女人特级毛片www免费 | 5xsq在线视频 | 欧美特黄一级高清免费的香蕉 | 欧美大穴| 欧美成人精品h版在线观看 久久久久久三区 | 色综合久久久久久久粉嫩 | 成人国产精品一区二区毛片在线 | 精品国产99久久久久久宅男i |