『壹』 php 輸出字元長度

mb_substr("字元串",開始索引抄(int),結束索引(int),「襲utf-8」)
按照上面的寫就是了
如果用substr來寫的話 utf-8的格式一個中文佔3個長度gbk和gb2312一個中文佔2個長度
而mb_substr來寫的話 不管什麼格式 只要是佔一個位置 都是算作一個長度
但是用mb_substr必須注意幾點
在php.ini中 就是php的配置文件中必須開啟mb_substr這個符號 就是把前面份額分號給去掉
還有就是後面必須寫上你的編碼格式如「utf-8」或者gb2312之類的
如果你想用這個mb_substr的話 並且那個字元串中還有英文的話那是絕對會出錯的
至於寫的話 樓主自己寫一下吧 查一下文檔不久OK了嗎 還要別人寫出來 這點自學能力都沒有

『貳』 用PHP統計字元串長度

PHP 計算字元串長度代碼示例如下,具體邏輯在代碼中。

<?php
//統計字元串長度,適用中文,字母,數字混編
functionget_strlength($str){
//強字元串統一轉換為utf-8格式
$encode=mb_detect_encoding($str,array('ASCII','UTF-8','GB2312','GBK'));
if(!$encode=='UTF-8'){
$str=iconv('UTF-8',$encode,$str);
}
//初始化字元串長度
$count=0;

//循環統計
for($i=0;$i<strlen($str);$i++){
//獲取字元串首字母對應的ASCII值
$value=ord($str[$i]);

if($value>127){
$count++;
if($value>=192&&$value<=223){
$i++;
}elseif($value>=224&&$value<=239){
$i=$i+2;
}elseif($value>=240&&$value<=247){
$i=$i+3;
}else{
die('字元串異常!!');
}
}
$count++;
}
return$count;
}

//測試
echoget_strlength("中國人2015年的gdp為:6666");
//25
?>

『叄』 php判斷字元串長度問題

if(!preg_match("/.{2,30}/",$City)){
exit("請選擇城市!");
}

這個是正則表達式的寫法,不懂的話建議你學習下正則表達式,開發實用性很高


前後/ 是起始結束符號

. 代表任意字元

{2,30} 前一個內容2次 ~ 30次

『肆』 php,怎麼獲取指定長度的字元串

<?php
echo substr(需要截取字元串, 起止數, 需要截取的長度);
?>
截取字元串只支持英文。如果字元串包含中文。或混排。以及文字 編碼。gb2312 和 utf8 。截取方式就不一樣了。

推薦使用 bugfree 的截取字元串函數
例子:/**
* @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())
*
* @author Chunsheng Wang <[email protected]>
* @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 = "CodeBit.cn -- 簡單、精彩、通用";
$Length = "18";
$Append = false;
echo sysSubStr($String,$Length,$Append);
?>

『伍』 在php中,怎樣得到一個文本框中的字元串的長度

<input name="submit" type="submit" class="button" id="submit1" value="提交"></input></form><?php$str = $_POST["text1"]; //獲取文本框的字元串賦予 $str $a="字元串長度為:"; $b=strlen($str); //用strlen函數返回$str的字元串長度echo $a;echo $b;?>上面的程序,能不能看懂。有問題再問。

『陸』 PHP獲取字元串長度

可以用PHP自帶的函數計算字元長度,在php中,如果選擇的是/gb2312編碼,則一個中文占兩個位元組,如果是utf-8編碼,則一個中文佔三個位元組。而英文字元英文字元佔1位元組。比如:
//utf-8編碼時
echo "http://coderschool.cn你好"."<br/>";
echo strlen("http://coderschool.cn你好");
輸出結果:
http://coderschool.cn你好
27

//gbk下
echo strlen("http://coderschool.cn你好");
輸出結果:
25

在輸出字元串個數時,如果想將一個中文當成長度為1時,則需要另外寫函數實現,可以通過正則或者循環
的方式實現,正則的方法:
function utf8_strlen($string = null) {
// 將字元串分解為單元
preg_match_all("/./us", $string, $match);
// 返回單元個數
return count($match[0]);
}
echo utf8_strlen("你好呀AAA");
輸出結果:6

另一種方法 gbk/gb2312下:
function new_strlen($str)
{
$len=strlen($str);
$i=0; $j=0;
while($i<$len)
{
if(preg_match("/^[".chr(0xa1)."-".chr(0xf9)."]+$/",$str[$i]))
{
//gbk,gb2312加2,一個中文2個位元組
$i+=2;
} else {
$i+=1;
}
$j++;
}
}
echo new_strlen("你好呀AAA");
輸出:6

utf-8下:
function new_strlen($str)
{
$len=strlen($str);
$i=0; $j=0;
while($i<$len)
{
if(preg_match("/^[".chr(0xa1)."-".chr(0xf9)."]+$/",$str[$i]))
{
//utf-8加3,一個中文3個位元組
$i+=3;
} else {
$i+=1;
}
$j++;
}
}
echo new_strlen("你好呀AAA");
輸出:6

『柒』 php中截取字元串指定長度

substr — 返回字元串的子串
說明
substr ( string $string , int $start [, int $length ] ) : string
返回字元串 string 由 start 和 length 參數指定的子字元串。
參數
string
輸入字元串。必須至少有一個字元。
start
如果 start 是非負數,返回的字元串將從 string 的 start 位置開始,從 0 開始計算。例如,在字元串 「abcdef」 中,在位置 0 的字元是 「a」,位置 2 的字元串是 「c」 等等。
如果 start 是負數,返回的字元串將從 string 結尾處向前數第 start 個字元開始。
如果 string 的長度小於 start,將返回 FALSE。

『捌』 PHP獲取中英混合字元串長度的方法

今晚在寫框架的表單驗證類時,需要判斷某個字元串長度是否在指定區間內,很自然地,想到了PHP中的strlen函數。
.代碼如下:
$str
=
'Hello
world!';
echo
strlen($str); //
輸出12
然而在PHP自帶的函數中,strlen及mb_strlen都是通過計算字元串所佔位元組數來計算長度的,在不同的編碼情況下,中文所佔的位元組數是不同的。在GBK/GB2312下,中文字元佔2個位元組,而在UTF-8下,中文字元佔3個位元組。
.代碼如下:
$str
=
'你好,世界!';
echo
strlen($str); //
GBK或GB2312下輸出12,UTF-8下輸出18
而我們在判斷字元串長度時往往需要判斷的是字元的數量,而非字元串所佔位元組數,如在UTF-8下的這段PHP代碼:
.代碼如下:
$name
=
'張耕暢';
$len
=
strlen($name);
//
輸出
FALSE,因為在UTF-8下三個中文佔9個位元組
if($len
>=
3
&&
$len
<=
8){
echo
'TRUE';
}else{
echo
'FALSE';
}
那麼有什麼方便而實用的方法可以獲得含中文字元串的長度呢?可以用正則計算出中文字元的個數,在GBK/GB2312編碼下除以2,UTF-8編碼下則除以3,最後再加上非中文字元串的長度,但這樣未免太過麻煩。

WordPress這么一段代碼,借鑒如下:
.代碼如下:
$str
=
'Hello,世界!';
preg_match_all('/./us',
$str,
$match);
echo
count($match[0]); //
輸出9
思想是用正則表達式將字元串分割成單個字元,並直接用count計算出匹配到的字元數,便是我們想要的結果了。

但以上代碼在UTF-8編碼下並不能處理GBK/GB2312的中文字元串,因為GBK/GB2312的中文字元會被識別為兩個字元而計算出來的中文字元數量會翻倍,於是我想到了這么一個辦法:
.代碼如下:
$tmp
=
@iconv('gbk',
'utf-8',
$str);
if(!empty($tmp)){
$str
=
$tmp;
}
preg_match_all('/./us',
$str,
$match);
echo
count($match[0]);
可兼容GBK/GB2312及UTF-8編碼,經小量數據測試通過,但暫未確定是否完全正確,盼有大牛指點一二。

以上本意是為了框架可以兼容多種編碼格式,但一般在日常開發中,一個項目是已經可以確定為何種編碼的,因此可以使用以下函數來方便地獲取字元串長度:
.代碼如下:
int
iconv_strlen
(
string
$str
[,
string
$charset
=
ini_get("iconv.internal_encoding")
]
)

『玖』 php 怎麼計算字元串長度

使用strlen函數

intstrlen(string$string)

php文檔中的例回子答

<?php
$str='abcdef';
echostrlen($str);//6

$str='abcd';
echostrlen($str);//7
?>

『拾』 PHP怎麼獲取字元串長度

PHP對中文字元串的處理一直困擾於剛剛接觸PHP開發的新手程序員。下回面簡要的剖析一下PHP對中文字答符串長度的處理:

(1)PHP自帶的函數如strlen()、mb_strlen()都是通過計算字元串所佔位元組數來統計字元串長度的,一個英文字元佔1位元組;

(2)中文則不然,做中文網站一般會選擇兩種編碼:gbk/gb2312或是utf-8。utf-8能兼容更多的字元,所以受到很多站長的喜愛。gbk與utf-8對中文的編碼不同,導致中文在gbk與utf-8編碼下所佔位元組也有差異。