PHP检查字符串的第一个数字是否为1?

时间:2013-07-26 03:02:08

标签: php strlen

PHP检查字符串的第一个数字是否为1。 我怎样才能做到这一点? 另外,我如何检查字符串是否在27-34之间。 strlen($variable) == 27-34会有效吗?

感谢。

5 个答案:

答案 0 :(得分:1)

如果您尝试同时进行两项检查,可以使用如下的正则表达式:

$str = 'string to test';
if (preg_match('/^1.{26,33}$/', $str)) {
    // string starts with 1, and is 27-34 characters long
}

我正在使用的正则表达式是:

/       the start of the regular expression
^       the start of the string
1       a literal '1'
.       any character
{26,33} previous item repeated 26-33 times total
$       the end of the string
/       the end of the regular expression

请注意,如果您要验证比特币地址,它们也可以从3开始。为此,您应该使用1替换正则表达式中的[13]

'/^[13].{26,33}$/'

另请注意,正确的地址验证应该比这更彻底,并且应该验证校验和,以防止复制或输入错误。

来自the bitcoin wiki

  

如果您想在应用程序中验证比特币地址,建议使用this thread中的方法,而不是只检查字符串长度,允许的字符,或者地址以1开头或者3。

答案 1 :(得分:0)

除非我错误地阅读了这个问题,否则您想知道字符串中的第一个数字是否为数字1,字符串的长度是否介于27到34个字符之间。

许多答案都是查看字符串的第一个字符,而不是字符串中的第一个数字。

无论如何,这是一个简单的功能与测试器。所有测试都通过(即它们正确地确定哪些字符串中的数字为1)。空字符串,没有数字的字符串,短字符串和长字符串都将返回false。

<?php

/**
 * Is the first digit in the string the number 1 and that the string's length is between 27 and 34.
 *
 * @param string $string
 * @return bool
 */ 
function checkString($string)
{
    return preg_match('`(\d)`', $string, $matches) && $matches[1] == '1' && strlen($string) >= 27 && strlen($string) <= 34;
}



class tester
{
    public function providePossibleStrings()
    {
        return [
            ['1', false],
            ['A1', false],
            ['21', false],
            ['A21', false],
            ['A', false],
            ['', false],
            ['ABCDEFGHIJKLMNOPQRSTUVWXYZ', false],
            ['ABCDEFGHIJKLMNOPQRSTUVWXYZa', false],
            ['ABCDEFGHIJKLMNOPQRSTUVWXYZ1', true],
            ['ABCDEFGHIJKLMNOPQRSTUVWXYZ12', true],
            ['ABCDEFGHIJKLMNOPQRSTUVWXYZ123', true],
            ['ABCDEFGHIJKLMNOPQRSTUVWXYZ1234', true],
            ['ABCDEFGHIJKLMNOPQRSTUVWXYZ12345', true],
            ['ABCDEFGHIJKLMNOPQRSTUVWXYZ123456', true],
            ['ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567', true],
            ['ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678', true],
            ['ABCDEFGHIJKLMNOPQRSTUVWXY01', false],
            ['ABCDEFGHIJKLMNOPQRSTUVWXY012', false],
            ['ABCDEFGHIJKLMNOPQRSTUVWXY0123', false],
            ['ABCDEFGHIJKLMNOPQRSTUVWXY01234', false],
            ['ABCDEFGHIJKLMNOPQRSTUVWXY012345', false],
            ['ABCDEFGHIJKLMNOPQRSTUVWXY0123456', false],
            ['ABCDEFGHIJKLMNOPQRSTUVWXY01234567', false],
            ['ABCDEFGHIJKLMNOPQRSTUVWXY012345678', false],
            ['ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789', false],
            ['ABCDEFGHIJKLMNOPQRSTUVWXYZ0', false],
            ['ABCDEFGHIJKLMNOPQRSTUVWXYZ02', false],
            ['ABCDEFGHIJKLMNOPQRSTUVWXYZ023', false],
            ['ABCDEFGHIJKLMNOPQRSTUVWXYZ0234', false],
            ['ABCDEFGHIJKLMNOPQRSTUVWXYZ02345', false],
            ['ABCDEFGHIJKLMNOPQRSTUVWXYZ023456', false],
            ['ABCDEFGHIJKLMNOPQRSTUVWXYZ0234567', false],
            ['ABCDEFGHIJKLMNOPQRSTUVWXYZ02345678', false],
            ['ABCDEFGHIJKLMNOPQRSTUVWXYZ023456789', false],
            ['ABCDEFGHIJKLMNOPQRSTUVWXYZ234567891', false],
            ['ABCDEFGHIJKLMNOPQRSTUVWXYZ234567890', false],
        ];
    }

    public function testCheckString($value, $result)
    {
        echo($result == checkString($value) ? 'Pass' : 'Fail'), ' : ', $value, PHP_EOL;
    }
}

$tester = new tester();
foreach ($tester->providePossibleStrings() as $testParams) {
    call_user_func_array([$tester, 'testCheckString'], $testParams);
}

答案 2 :(得分:-1)

Q1)检查字符串的第一个数字是否为1?

A1)preg_match("/^1/", $yourNumber)。返回1表示true,0表示false A1b)确保值为数字preg_match("/^1\d*$/", $yourNumber)

Q2)检查字符串是否在27-34之间。

A2)if($yourNumber >= 27 && $yourNumber <= 34)

答案 3 :(得分:-1)

要检查字符串的第一个数字是否为1,您可以执行此操作:

$string = "1fjiofwjoie";
if($string[0] == 1)
{
    // First digit is 1
}

else
{
    // First digit is not 1
}

至于检查字符串是否在27到34之间,你可以这样做:

if($string >= 27 && $string <= 34)
{
    // Code here
}

如果您指的是字符串长度,请执行以下操作:

if(strlen($string) >= 27 && strlen($string) <= 34)
{
    // Code here
}

答案 4 :(得分:-1)

if(substr("your_string_here",0, 1)=="1")
echo "Yes, the first character is 1";

if(("the_string">27)&("the_string"<34))
echo "Yes, the string lies between 27 and 34";