2011-05-13 152 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"); 
相关问题