PHP:如何检查示例二进制字符串是否仅为 1's and 0' s?

标签 php binary

我想检查 PHP 中的数字是否是正确的二进制。到目前为止,我已经添加了这个来检查它是否可以通过 8 设计:

if(strlen($binary) % 8 == 0){
        return true;
} else {
        return false;
}

它可以工作,但它显然允许放入其他数字,例如 22229999。

我可以使用什么方法来确保字符串中只有 1 和 0?例如 10001001。不知道如何解决这个问题。

最佳答案

这可能比启动正则表达式引擎更快:

if (strspn ( $subject , '01') == strlen($subject)) {
    echo 'It\'s binary!';
} else {
    echo 'Not binary!';
}

如果您只是查找简单的字符或想要对它们进行计数,则正则表达式通常非常慢,而一两个内置字符串函数可以更快地完成这项工作。 也许这确实适用于此,也许不适用。

在听到评论中的一些评论后,这可能行不通,这是一个测试用例:

<?php

$strings = array('10001001', '22229999', '40004000');

foreach ( $strings as $string )
{
    if ( strspn( $string, '01') == strlen( $string ) ) {
        echo $string . ' is binary!' . "\n";
    } else {
        echo $string . ' is NOT binary!' . "\n";
    }
}

它完成了工作。

关于PHP:如何检查示例二进制字符串是否仅为 1's and 0' s?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2167595/

相关文章:

php - Laravel 使用 CSRF 保护发布 JSON

php - 从数据库mysql获取N值

php - 多页技术

batch-file - 使用批处理文件将二进制文件转换为十六进制表示

PHP IBM DB2 错误

php - 类别未放置在正确的部分

c# - 为什么我的 Base 10 LSD 基数排序比我的位移位基数排序更快?

c - 我的解释正确吗?我可以打印 double 的二进制表示形式,例如 :1?

python - python如何测试从数据库中提取的一些纯文本中的二进制数据

c++ - 在二进制字符串的数字之间留出空间