Hướng dẫn dùng string size trong PHP

Hàm strlen() được dùng để trả về chiều dài (số lượng ký tự) của một chuỗi.

Cú pháp:

strlen(string)

Đếm số lượng ký tự của chuỗi "Tai lieu hoc PHP"


Xem ví dụ

Lưu ý: Số lượng ký tự của một chuỗi có dấu và không dầu là hoàn toàn khác nhau, chuỗi có dấu sẽ có số lượng ký tự nhiều hơn chuỗi không có dấu.

Chuỗi "Tai lieu hoc PHP" và "Tài liệu học PHP" có số lượng ký tự khác nhau


";
    echo $length2;
?>

Xem ví dụ

Hàm strlen() được dùng để trả về chiều dài (số lượng ký tự) của một chuỗi.

Cú pháp:

strlen(string)

Đếm số lượng ký tự của chuỗi "Tai lieu hoc PHP"


Xem ví dụ

Lưu ý: Số lượng ký tự của một chuỗi có dấu và không dầu là hoàn toàn khác nhau, chuỗi có dấu sẽ có số lượng ký tự nhiều hơn chuỗi không có dấu.

Chuỗi "Tai lieu hoc PHP" và "Tài liệu học PHP" có số lượng ký tự khác nhau


";
    echo $length2;
?>

Xem ví dụ

Hàm strlen() được dùng để trả về chiều dài (số lượng ký tự) của một chuỗi.

Cú pháp:

strlen(string)

Đếm số lượng ký tự của chuỗi "Tai lieu hoc PHP"


Xem ví dụ

Lưu ý: Số lượng ký tự của một chuỗi có dấu và không dầu là hoàn toàn khác nhau, chuỗi có dấu sẽ có số lượng ký tự nhiều hơn chuỗi không có dấu.

Chuỗi "Tai lieu hoc PHP" và "Tài liệu học PHP" có số lượng ký tự khác nhau


";
    echo $length2;
?>

Xem ví dụ

Tác dụng của hàm strlen()

The strlen() function returns the length of a string.

The following table summarizes the technical details of this function.

Return Value:Returns the length of the string on success, and 0 if the string is empty.
Version:PHP 4+

Syntax

The basic syntax of the strlen() function is given with:

The following example shows the strlen() function in action.


Parameters

The strlen() function accepts the following parameters.

ParameterDescription
string Required. Specifies the string to check for length.

Bài viết này đã giúp ích cho bạn?

strlen()Hàm của PHP trả về số ký tự ASCII.

strlen('borsc') -> 5 (byte)

strlen('boršč') -> 7 (byte)

$limit_in_kBytes = 20000;

$pointer = 0;
while(strlen($your_string) > (($pointer + 1) * $limit_in_kBytes)){
    $str_to_handle = substr($your_string, ($pointer * $limit_in_kBytes ), $limit_in_kBytes);
    // here you can handle (0 - n) parts of string
    $pointer++;
}

$str_to_handle = substr($your_string, ($pointer * $limit_in_kBytes), $limit_in_kBytes);
// here you can handle last part of string

.. hoặc bạn có thể sử dụng một chức năng như sau:

function parseStrToArr($string, $limit_in_kBytes){
    $ret = array();

    $pointer = 0;
    while(strlen($string) > (($pointer + 1) * $limit_in_kBytes)){
        $ret[] = substr($string, ($pointer * $limit_in_kBytes ), $limit_in_kBytes);
        $pointer++;
    }

    $ret[] = substr($string, ($pointer * $limit_in_kBytes), $limit_in_kBytes);

    return $ret;
}

$arr = parseStrToArr($your_string, $limit_in_kBytes = 20000);

5 hữu ích 0 bình luận chia sẻ

answer

65

Có lẽ:

$num = 245354;
$numlength = strlen((string)$num);

65 hữu ích 3 bình luận chia sẻ

answer

15

Câu trả lời được chấp nhận sẽ không hoạt động với những con số lớn. Cách tốt hơn để tính độ dài của bất kỳ số nào là gọi floor(log10($num) + 1)với một dấu kiểm cho 0.

$num = 12357;
echo $num !== 0 ? floor(log10($num) + 1) : 1; // prints 5

Nó có nhiều lợi thế. Nó nhanh hơn, bạn không thực hiện việc ép kiểu, nó hoạt động trên các số lớn, nó hoạt động với các hệ thống số khác nhau như bin, hex, oct.

Phương trình lôgarit với cơ số 10 sau đó làm cho tầng của nó và cộng thêm 1.

Giải pháp này có thể hoạt động độc lập trên cơ số, vì vậy nếu bạn muốn tính độ dài của nhị phân hoặc hex chỉ cần thay đổi cơ số của lôgarit.

Làm việc không cẩn thận

15 hữu ích 5 bình luận chia sẻ

answer

2

Giải pháp được chấp nhận đưa ra một vấn đề khi đánh giá các số âm.

Nó hoạt động với một số dương:

$num = 245354;
$numlength = strlen((string)$num);
// Result: 6

Nhưng với một số âm, dấu (-) được thêm vào số đếm:

$num = -245354;
$numlength = strlen((string)$num);
// Result: 7

Cách giải quyết nhanh chóng:

$num = -245354;
$numlength = strlen((string)abs($num));
// Result: 6

2 hữu ích 0 bình luận chia sẻ

answer

1

Cách thanh lịch hơn :)

ceil(log10($num));

1 hữu ích 1 bình luận chia sẻ

answer

1

Bạn cũng có thể sử dụng một số phép toán cơ bản!

$digits = (int)(log($num,10)+1) 

1 hữu ích 0 bình luận chia sẻ

answer

1

Một cách khác để tìm ra độ dài của một số trong các chữ số là chia phần nguyên của số đó cho 10 cho đến khi nó trở thành 0.

Thí dụ:

2021/10 = 202.1 
202/10 = 20.2 
20/10 = 2 
2/10 = 0.2

Mã:

function numberGetLength($number) {
     $count = 0;
     while (intval($number) > 0) {
        $number = intval($number) / 10;
        $count += 1;
     }
     return $count
}

1 hữu ích 0 bình luận chia sẻ

answer

0

Chỉ cần sử dụng một số phiên bản (int)(log($num,10)+1)không thành công cho 10, 100, 1000, v.v. Nó đếm số 10 là 1 chữ số, 100 là hai chữ số, v.v. Nó cũng không thành công với 0 hoặc bất kỳ số âm nào.
Nếu bạn phải sử dụng toán học (và số không âm), hãy sử dụng:
$numlength = (int)(log($num+1, 10)+1);

Hoặc đối với một giải pháp toán học đếm các chữ số bằng số dương HOẶC âm:
$numlength = ($num>=0) ? (int)(log($num+1, 10)+1) : (int)(log(1-$num, 10)+1);

Nhưng giải pháp strlen cũng nhanh như trong PHP.

0 hữu ích 0 bình luận chia sẻ

answer

0

Trong PHP, các loại được thiết lập và đoán một cách lỏng lẻo, nếu bạn muốn xem một thứ gì đó dưới dạng chuỗi nếu nó là một số nguyên , float và (tôi chưa thử điều này) bool thì @Gorjunav là câu trả lời chính xác nhất.

Đặt lại biến dưới dạng một chuỗi

$stringNum = (string) $num;

Sau đó, bạn có thể truy cập bất kỳ chuỗi liên quan nào bạn muốn với nó! Và ngược lại để thay đổi một chuỗi thành một int

$number = (int) $stringNum;

và như thế...

0 hữu ích 0 bình luận chia sẻ

answer

0

chỉ đếm giá trị số nguyên

  `";
        $count = 0; 
        while ($n1 != 0)  
        { 
            $n1 = $n1 / 10;
            $n1 = intval($n1);
            ++$count; 
        } 
        echo "The Digit in a Number: ".$count;
    }
    ?>`

0 hữu ích 0 bình luận chia sẻ

answer

0

echo strlen((string) abs($num)); // using **abs** it'll work with negative integers as well  

0 hữu ích 3 bình luận chia sẻ

answer

0

Đã thử nghiệm trong PHP 4.4.9 - 8.0.0

$array = array(-1, 0, -0, 1, 4, 9, 10, -10, 20, -20, 100, -100);
foreach( $array as $key => $num ){
    echo $key."\t{$num}\t=>\t".($num !== 0 ? floor(log10(abs($num)) + 1) : 1)."\n";
}
/* Output:
0   -1  =>  1
1   0   =>  1
2   0   =>  1
3   1   =>  1
4   4   =>  1
5   9   =>  1
6   10  =>  2
7   -10 =>  2
8   20  =>  2
9   -20 =>  2
10  100 =>  3
11  -100    =>  3
*/

0 hữu ích 0 bình luận chia sẻ

answer

0

Hàm sau hoạt động cho cả số nguyên hoặc số thực (hoạt động với PHP7 +):

function digitsCount($number): int
{
    $number = abs($number);
    $numberParts = explode(".", $number);

    return
        strlen($numberParts[0]) +
        (strlen($numberParts[1] ?? 0));
}

0 hữu ích 0 bình luận chia sẻ