2011-05-13 369 views

回答

4

讓傻

function stupidCheck($string) 
{ 
    $count = 0; 
    for($i=0; $i<66000; $i++) 
    { 
     if(@$string[$i] != "")$count++; 
     else break; 
    } 
    return $count; 
} 
+2

我有660​​01 :( – 2011-05-13 08:40:36

+0

太多沉重的字符串與@ – 2011-05-13 12:01:22

+0

'函數string_count($字符串) {$ CNT = 1快; $計數= 0; 爲($ I = 0; $ I <$ CNT; $ I ++) { 如果(@ $串[$ I] = 「」!){ $計數++; $ CNT + = 1;} else break; } return $ count; } ' – Asif 2012-07-12 13:53:50

0

你也可以用類似欺騙:

print strtok(substr(serialize($string), 2), ":"); 

或者這個人是很有趣:

print array_sum(count_chars($string)); 
3

我想還有的mb_strlen()功能。

這不是strlen(),但它做了同樣的工作(與使用擴展字符集的額外獎金)。

如果你真的想保持從甚至關係到strlen()任何東西,我想你可以做這樣的事情:

$length = count(str_split($string)); 

我敢肯定有很多其他的方法可以做到這一點。真正的問題是......呃,爲什麼?

0
function mystrlen($str) 
{ 
    $i = 0; 
    while ($str != '') 
    { 
     $str = substr($str, 1); 
     $i++; 
    } 
    return $i; 
} 
8

我知道這是一個很老的問題,但這段代碼爲我工作。

$s = 'string'; 
$i=0; 
while ($s[$i] != '') { 
    $i++; 
} 
print $i; 
0

這對你的服務器來說是一件繁重的工作,但是一種處理它的方法。

function($string){ 
    $c=0; 
    while(true){ 
    if(!empty($string[$c])){ 
     $c=$c+1; 
    } else { 
     break; // Prevent errors with return. 
    } 
    } 
    return $c; 
} 
0
$str = "STRING"; 
$i=0; $count = 0; 
while((isset($str{$i}) && $str{$i} != "")){ 
$i++; $count++; 
} 
print $count; 
+0

$計數++;你可以寫'while($ str {$ i}!=「」){i = 1,2,...,i} $計數++; if(!isset($ str {$ i}))break; '使功能更具可讀性。 – 2016-09-03 16:21:06

1

mb_strlen - 獲取字符串長度

$string ='test strlen check'; 
print 'mb_strlen(): ' . mb_strlen($string, 'utf8') . "\n\n"; 

synatx:int mb_strlen (string $str [, string $encoding = mb_internal_encoding() ])

STR - 所檢查的字符串長度。

編碼 - 編碼參數是字符編碼。如果省略,則使用內部字符編碼值。

+0

你的synatx已關閉:-) – tucuxi 2015-07-14 13:07:44

5
$inputstring="abcd"; 
$tmp = ''; $i = 0; 

    while (isset($inputstring[$i])){ 
     $tmp .= $inputstring[$i]; 
     $i++; 
    } 

echo $i; //final string count 
echo $tmp; // Read string 

一段時間 - 通過1

$i迭代字符串的字符1 - 給出字符串的最終計數。

isset($inputstring[$i]) - 檢查字符是否存在(null)或不存在。

+0

雖然這回答了這個問題,但對一些解釋會更好。 – 2014-12-20 03:04:50

+0

將報告空字符串的長度爲1 – GordonM 2017-03-30 08:29:02

+0

@GordonM我已更新答案。現在爲空字符串,它將返回0. – Narayan 2017-03-30 08:52:23

0
function findStringLength($string) { 
    $length = 0; 
    $lastStringChar1 = '1'; 
    $lastStringChar2 = '2'; 

    $string1 = $string . $lastStringChar1; 
    $string2 = $string . $lastStringChar2; 

    while ($string1[$length] != $lastStringChar1 || $string2[$length] != $lastStringChar2) { 
     $length++; 
    } 

    return $length; 
} 
0

您可以使用此代碼查找字符串長度而不使用strlen()函數。

<?php 
function stringlength($withoutstringlength) 
{ 
    $n = 0; 
    while(substr($withoutstringlength, $n, $n+1) != '')//General syntax substr(string,start,length) 
    { 
     $n++; 
    } 
    echo $n; 
} 
stringlength("i am a php dev"); 
?> 
0

試試這個:

function length($value){ 

    if(empty($value[1])) return 1; 

    $n = 0; 
    while(!empty($value[$n+1])){ 

     $n++; 
    } 

    return $n+1; 
} 
0

這也可以幫助 -

$s = 'string'; 
$temp = str_split($s); // Convert a string to an array by each character 

// if don't want the spaces 
$temp = array_filter($temp); // remove empty values 

echo count($temp); // count the number of element in array 

輸出

6 
2

通過Vaibhav的耆那教給出的答案會拋出關於最後一個索引的以下通知。

注:未初始化字符串偏移

我想給這個替代:

<?php 

$str = 'India'; 

$i = 0; 
while(@$str[$i]) { 
    $i++; 
} 

echo 'Length of ' . $str . ' is ' . $i . '.'; 
+0

你能解釋一下,爲什麼不使用@它會產生「注意:未初始化的字符串偏移量」以及@如何處理這個問題? – learner 2017-09-22 05:19:34

+0

'@'是PHP中使用的錯誤控制操作符。當我們將此前置於任何表達式時,該表達式可能發生的錯誤將被忽略。 – Aviator 2017-09-25 12:00:56

0

這不使用循環,但可能會面臨如果strrpos用途爲O(n)問題strlen內部。

function length($str) 
{ 
    return strrpos($str.'_', '_', -1); 
} 
0
function my_strlen($str) 
{ 
    for($i=-1; isset($str[++$i]);); 
    return $i; 
} 

echo my_strlen("q"); 
相關問題