導航:首頁 > 編程語言 > php截取長度

php截取長度

發布時間:2022-05-27 01:18:09

『壹』 php正則 截取字元串長度

如果是中文,要用mbsubstr 詳見php幫助
你可以去後盾人平台看看,裡面的東西不錯

『貳』 PHP截取字元串長度

php截取中文字元串無亂碼函數:

function ZHsubstr($str, $start=0, $length, $charset="utf-8"){
$len = strlen($str); //原位元組數
if($len > $length)
$suffixStr = "…";
else
$suffixStr = "";

if(function_exists("mb_substr"))
return mb_substr($str, $start, $length, $charset).$suffixStr;
elseif(function_exists('iconv_substr')) {
return iconv_substr($str,$start,$length,$charset).$suffixStr;
}
$re['utf-8'] = "/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/";
$re['gb2312'] = "/[x01-x7f]|[xb0-xf7][xa0-xfe]/";
$re['gbk'] = "/[x01-x7f]|[x81-xfe][x40-xfe]/";
$re['big5'] = "/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/";
preg_match_all($re[$charset], $str, $match);
$slice = join("",array_slice($match[0], $start, $length));
return $slice.$suffixStr;
}

使用方法:

$str = "$page_title";
$page_title=ZHsubstr($str, 0, 40, 'utf-8');

『叄』 實現php模板頁面截取文本編輯中指定內容的長度

給你個思路,先提取出來純文本(利用去除html函數)
然後截取指定長度,最後再替換掉原文本,保留原來的html標簽
就可以了

『肆』 php如何獲取中文字元長度,一個中文字元算一個

在PHP中專門的mb_substr和mb_strlen函數,可以對中文進行截取和計算長度,但是,由於這些函數並非PHP的核心函數,所以,它們常常有可能沒有開啟。要在php.ini中開啟即可。獲取長度實例:1 ,utf-8環境下使用

header('Content-type:text/html;charset=utf-8');
/**
*可以統計中文字元串長度的函數
*@param$str要計算長度的字元串
*@param$type計算長度類型,0(默認)表示一個中文算一個字元,1表示一個中文算兩個字元
*
*/
functionabslength($str)
{
if(empty($str)){
return0;
}
if(function_exists('mb_strlen')){
returnmb_strlen($str,'utf-8');
}
else{
preg_match_all("/./u",$str,$ar);
returncount($ar[0]);
}
}
$str='我們都是中國人啊,ye!';
$len=abslength($str);
var_mp($len);//return12
$len=abslength($str,'1');
echo'<br/>'.$len;//return22

/*
utf-8編碼下截取中文字元串,參數可以參照substr函數
@param$str要進行截取的字元串
@param$start要進行截取的開始位置,負數為反向截取
@param$end要進行截取的長度
*/
functionutf8_substr($str,$start=0){
if(empty($str)){
returnfalse;
}
if(function_exists('mb_substr')){
if(func_num_args()>=3){
$end=func_get_arg(2);
returnmb_substr($str,$start,$end,'utf-8');
}
else{
mb_internal_encoding("UTF-8");
returnmb_substr($str,$start);
}

}
else{
$null="";
preg_match_all("/./u",$str,$ar);
if(func_num_args()>=3){
$end=func_get_arg(2);
returnjoin($null,array_slice($ar[0],$start,$end));
}
else{
returnjoin($null,array_slice($ar[0],$start));
}
}
}
$str2='wo要截取zhongwen';
echo'<br/>';
echoutf8_substr($str2,0,-4);//returnwo要截取zhon

2,支持gb2312,gbk,utf-8,big5 中文截取方法

/*

* 中文截取,支持gb2312,gbk,utf-8,big5

*

* @param string $str 要截取的字串

* @param int $start 截取起始位置

* @param int $length 截取長度

* @param string $charset utf-8|gb2312|gbk|big5 編碼

* @param $suffix 是否加尾綴

*/

public function csubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)

{

if(function_exists("mb_substr"))

{

if(mb_strlen($str, $charset) <= $length) return $str;

$slice = mb_substr($str, $start, $length, $charset);

}

else

{

$re['utf-8'] = "/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/";

$re['gb2312'] = "/[x01-x7f]|[xb0-xf7][xa0-xfe]/";

$re['gbk'] = "/[x01-x7f]|[x81-xfe][x40-xfe]/";

$re['big5'] = "/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/";

preg_match_all($re[$charset], $str, $match);

if(count($match[0]) <= $length) return $str;

$slice = join("",array_slice($match[0], $start, $length));

}

if($suffix) return $slice."…";

return $slice;

}

『伍』 如何截取php標題長度

php的用substr函數來截取
$rest = substr("abcdef", -1); // 返回 "f"
$rest = substr("abcdef", -2); // 返回 "ef"
$rest = substr("abcdef", -3, 1); // 返回 "d"

『陸』 最准確的php截取字元串長度函數

說是最精確截取長度,其實我也不敢確定是否是最精確的,具體有多精確看下面的效果就知道了:
先上測試用的字元串:
<?php
header("Content-Type:text/html;charset=utf-8");
echo
cn_substr_utf8('我是一個,和哈,哦也,,國家!',12);
echo
'<br
/>',cn_substr_utf8('ai\'2145m
a
ch3我[是一,個,和哈,哦也,,國家!',12);
echo
'<br
/>',cn_substr_utf8('【我,是一,個,和哈,哦也,,國家!',12);
echo
'<br
/>',cn_substr_utf8('我是一,個,和哈,哦也,,國家!',12);
echo
'<br
/>',cn_substr_utf8('我是,一,個,和哈,哦也,,國家!',12);
echo
'<br
/>',cn_substr_utf8('我,是,一,個,和哈,哦也,,國家!',12);
echo
'<br
/>',cn_substr_utf8('我是asd一,個,和哈,哦也,,國家!',12);
echo
'<br
/>',cn_substr_utf8('【我i\'m[是一,個,和哈,哦也,,國家!',12);
echo
'<br
/>',cn_substr_utf8('【i\'m
a
ch我[是一,個,和哈,哦也,,國家!',12);
echo
'<br
/>',cn_substr_utf8('【i\'2145m
a
ch3我[是一,個,和哈,哦也,,國家!',12);
下面是精確截取字元串的效果圖:
具體函數代碼如下:
//utf-8中文截取,單位元組截取模式
function
cn_substr_utf8($str,$length,$append='...',$start=0){
if(strlen($str)<$start+1){
return
'';
}
preg_match_all("/./su",$str,$ar);
$str2='';
$tstr='';
//www.phpernote.com
for($i=0;isset($ar[0][$i]);$i++){
if(strlen($tstr)<$start){
$tstr.=$ar[0][$i];
}else{
if(strlen($str2)<$length
+
strlen($ar[0][$i])){
$str2.=$ar[0][$i];
}else{
break;
}
}
}
return
$str==$str2?$str2:$str2.$append;
}
如果大家認為還不夠准確大家可以在此基礎上進行改進,或者是創新,希望這篇關於php截取字元串長度函數的文章對大家的學習有所幫助。

『柒』 PHP 如何截取標題長度 (utf-8編碼)

你可以查詢出完整標題,然後用 CSS 的 overflow指定超出部分不顯示,在標題中含有中英、數字混合的情況,很難做到字元串排版的寬度一致。

還有最壞的情況,用截斷的方法,把實際完整的標題斷開,破壞了原義,對SEO是無比的傷害。

用css控制顯示長度才是最好的做法。

『捌』 php如何截取漢字長度啊

function cutstr($string, $length, $dot = '') {
global $dbcharset;
$length*=2;
if(strlen($string) <= $length) {
return $string;
}
$string = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string);
$strcut = '';
if(strtolower($dbcharset) == 'utf8') {
$n = $tn = $noc = 0;
while($n < strlen($string)) {
$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 {
for($i = 0; $i < $length; $i++) {
$strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];
}
}
$strcut = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $strcut);
return $strcut.$dot;
}

『玖』 php截取一段字元 計算它的長度,多餘的用「...」代替

function cut_str($sourcestr,$cutlength){
$returnstr='';
$i=0;
$n=0;
$str_length=strlen($sourcestr);//字元串的位元組數
while (($n<$cutlength) and ($i<=$str_length))
{
$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++; //但考慮整體美觀,大寫字母計成一個高位字元
}
else //其他情況下,包括小寫字母和半形標點符號,
{
$returnstr=$returnstr.substr($sourcestr,$i,1);
$i=$i+1; //實際的Byte數計1個
$n=$n+0.5; //小寫字母和半形標點等與半個高位字元寬...
}
}
if ($str_length>$cutlength){
$returnstr = $returnstr."...";//超過長度時在尾處加上省略號
}
return $returnstr;
}
以上是函數,參數是相應字元串和該字元串長度,字元串的長度可以通過strlen函數獲取!希望對你有幫助!

『拾』 php里如何截取英文和漢字為相同字元長度

<?php
$str1="str字元串";
$str2="strstrstrstr";
$str3="字元串字元串字元串";
echo mb_substr($str1,0,3,'utf-8')."<br>";
echo mb_substr($str2,0,3,'utf-8')."<br>";
echo mb_substr($str3,0,3,'utf-8')."<br>";
?>

前提是你的頁面編碼也是utf-8

閱讀全文

與php截取長度相關的資料

熱點內容
最優估計pdf 瀏覽:826
androiddrawtext字體 瀏覽:669
c語言源編輯源程序編譯 瀏覽:821
手裡捏東西真的可以解壓嗎 瀏覽:265
編譯原理畫狀態表 瀏覽:28
用echo命令產生下列輸出 瀏覽:358
在內網如何訪問伺服器 瀏覽:959
java導入oracle資料庫 瀏覽:132
堅朗內開內倒鋁條演算法 瀏覽:259
華為閱讀新建文件夾 瀏覽:770
幻塔如何選擇伺服器 瀏覽:221
解壓先把文件壓到系統盤 瀏覽:822
access壓縮和修復資料庫 瀏覽:791
光纖交換機命令 瀏覽:513
白色桌放什麼文件夾 瀏覽:296
分治演算法思想 瀏覽:151
s曲線加減速演算法 瀏覽:403
可編程序控制器原理及應用答案 瀏覽:457
小熊編程教程 瀏覽:911
word轉換成pdf轉換器免費下載 瀏覽:612