Как вы можете найти длину строки в php без использования strlen()
?
Я знаю, что это довольно старая проблема, но эта часть кода работала для меня.
$s = 'string'; $i=0; while ($s[$i] != '') { $i++; } print $i;
$inputstring="abcd"; $tmp = ''; $i = 0; while (isset($inputstring[$i])){ $tmp .= $inputstring[$i]; $i++; } echo $i; //final string count echo $tmp; // Read string
while – Итерировать строковый символ 1
на 1
$i
– дает окончательное количество строк.
isset($inputstring[$i])
– проверка символа существует (null) или нет.
Давайте будем глупы
function stupidCheck($string) { $count = 0; for($i=0; $i<66000; $i++) { if(@$string[$i] != "")$count++; else break; } return $count; }
Я предполагаю, что mb_strlen()
функция mb_strlen()
.
Это не strlen()
, но он выполняет ту же работу (с добавленным бонусом к работе с расширенными наборами символов).
Если вы действительно хотите держаться подальше от всего, что связано с strlen()
, я думаю, вы могли бы сделать что-то вроде этого:
$length = count(str_split($string));
Я уверен, что есть много других способов сделать это. Реальный вопрос … ну, почему?
Ответ, данный Вайбхавом Джаином, выдает следующее уведомление по последнему индексу.
Примечание. Неинициализированное смещение строки
Я хотел бы дать альтернативу для этого:
<?php $str = 'India'; $i = 0; while(@$str[$i]) { $i++; } echo 'Length of ' . $str . ' is ' . $i . '.';
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 – Строка проверяется на длину.
encoding – параметр кодирования – это кодировка символов. Если он опущен, будет использоваться значение внутреннего кодирования символов.
Вы также можете обманывать что-то вроде:
print strtok(substr(serialize($string), 2), ":");
Или это довольно забавно:
print array_sum(count_chars($string));
function mystrlen($str) { $i = 0; while ($str != '') { $str = substr($str, 1); $i++; } return $i; }
Это будет тяжелая работа для вашего сервера, но способ справиться с этим.
function($string){ $c=0; while(true){ if(!empty($string[$c])){ $c=$c+1; } else { break; // Prevent errors with return. } } return $c; }
вfunction($string){ $c=0; while(true){ if(!empty($string[$c])){ $c=$c+1; } else { break; // Prevent errors with return. } } return $c; }
$str = "STRING"; $i=0; $count = 0; while((isset($str{$i}) && $str{$i} != "")){ $i++; $count++; } print $count;
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; }
Вы можете использовать этот код для нахождения длины строки без использования функции 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"); ?>
Попробуй это:
function length($value){ if(empty($value[1])) return 1; $n = 0; while(!empty($value[$n+1])){ $n++; } return $n+1; }
вfunction length($value){ if(empty($value[1])) return 1; $n = 0; while(!empty($value[$n+1])){ $n++; } return $n+1; }
Это также может помочь –
$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
Это не использует циклы, но может столкнуться с проблемой O (n), если strrpos использует strlen внутренне.
function length($str) { return strrpos($str.'_', '_', -1); }
function my_strlen($str) { for($i=-1; isset($str[++$i]); ); return $i; } echo my_strlen("q");