1

PHP检查字符串的第一个数字是否为1. 我怎样才能做到这一点?另外如何检查字符串是否介于27-34. 会strlen($variable) == 27-34工作吗?

谢谢。

4

5 回答 5

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}$/'

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

来自比特币维基

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

于 2013-07-26T03:36:14.963 回答
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);
}
于 2016-03-11T13:33:58.653 回答
-1

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

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

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

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

于 2013-07-26T03:05:57.157 回答
-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
}
于 2013-07-26T03:13:26.833 回答
-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";
于 2013-07-26T03:16:42.067 回答