2011-05-13 9 views

Respuesta

4

Permite ser tonto

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

tengo una serie de 66001 :( –

+0

demasiado pesado con @ –

+0

'string_count función ($ cadena) { $ cnt = 1; $ recuento = 0; for ($ i = 0; $ i <$ cnt; $ i ++) { si (@ $ string [$ i] = "") { $ count ++; $ cnt + = 1;} else break; } return $ count; } ' – Asif

0

También puede engañar con algo como:

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

O éste es bastante divertido:

print array_sum(count_chars($string)); 
3

supongo que no la función mb_strlen().

No es strlen(), pero realiza el mismo trabajo (con la ventaja añadida de trabajar con juegos de caracteres extendidos).

Si realmente quiere mantener alejado de cualquier cosa, incluso en relación con strlen(), supongo que se podría hacer algo como esto:

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

estoy seguro de que hay un montón de otras maneras de hacerlo también. La verdadera pregunta es ... eh, ¿por qué?

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

Sé que este es un problema muy viejo, pero este código me funcionó.

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

Va a ser un trabajo pesado para su servidor, pero una forma de manejarlo.

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

En lugar de escribir 'while ((isset ($ str {$ i}) && $ str {$ i}! =" ")) { $ i ++; $ count ++; } 'puede escribir' while ($ str {$ i}! = "") { $ i ++; $ count ++; if (! isset ($ str {$ i})) break; } 'para hacer que la función sea más legible. –

1

mb_strlen - Obtener longitud de la cadena

$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 - La cadena que se comprueba la longitud.

codificación - El parámetro de codificación es la codificación de caracteres. Si se omite, se usará el valor de codificación de caracteres interno.

+0

tu synatx está desactivado :-) – tucuxi

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

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

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

mientras que - Iterar la cadena de caracteres 1 por 1

$i - da el recuento final de cadena.

isset($inputstring[$i]) - comprobar que el carácter exista (nulo) o no.

+0

Si bien esto responde a la pregunta, sería mucho mejor con alguna explicación. –

+0

Informará una longitud de 1 para cadenas vacías – GordonM

+0

@GordonM Tengo la respuesta actualizada. Ahora, para cadena vacía, devolverá 0. – Narayan

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

Puede utilizar este código para encontrar la longitud de la cuerda sin utilizar la función 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

Prueba esto:

function length($value){ 

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

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

     $n++; 
    } 

    return $n+1; 
} 
0

Esto también puede ayudar -

$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 

salida

6 
2

La respuesta dada por Vaibhav Jain arrojará el siguiente aviso en el último índice.

Aviso: cadena sin inicializar compensado

me gustaría dar una alternativa para esto:

<?php 

$str = 'India'; 

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

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

¿Puede explicar por qué sin @ se está produciendo "Aviso: desplazamiento de cadena no inicializado" y cómo @ está manejando este problema? – learner

+0

'@' es un operador de control de errores utilizado en PHP. Cuando anteponemos esto a cualquier expresión, los errores que puedan ocurrir para esa expresión serán ignorados. – Aviator

0

Esto no utiliza bucles, pero puede enfrentar el problema de O (n) si los usos de strrpos strlen internamente

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

echo my_strlen("q"); 
Cuestiones relacionadas