2013-07-26 4 views
1

PHP Проверка наличия первой цифры строки 1. Как я могу это сделать? Также как проверить, находится ли строка между 27-34. Будет strlen($variable) == 27-34 работы?PHP Проверка, если первая цифра строки равна 1?

Спасибо.

+1

'substr()'? '[]'? 'Intval()'? Вы что-то пробовали? – Passerby

+0

Да, но как я могу установить его для проверки только первой цифры? – user2609179

+1

звучит как домашнее задание – jjclarkson

ответ

-1

Q1) Проверка, если первая цифра строки равна 1?

A1) preg_match("/^1/", $yourNumber). return 1 для true, 0 для false A1b), чтобы гарантировать, что это число, preg_match("/^1\d*$/", $yourNumber)

Q2) проверьте, находится ли строка между 27-34.

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

+0

Спасибо, проверим. – user2609179

+0

Ошибка анализа: синтаксическая ошибка, непредвиденная 'preg_match' (T_STRING) в C: \ xampp \ htdocs \ address_process.php в строке 24 – user2609179

+0

Могу ли я узнать значение yourNumber и какой ответ вы использовали (A1? A1b?) –

-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 
} 
-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"; 
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:

If you would like to validate a Bitcoin address in an application, it is advisable to use a method from this thread rather than to just check for string length, allowed characters, or that the address starts with a 1 or 3.

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], 
      ['ABCDEFGHIJKLMNOPQRSTUVWXY', false], 
      ['ABCDEFGHIJKLMNOPQRSTUVWXY', false], 
      ['ABCDEFGHIJKLMNOPQRSTUVWXY', false], 
      ['ABCDEFGHIJKLMNOPQRSTUVWXY', false], 
      ['ABCDEFGHIJKLMNOPQRSTUVWXY', 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); 
} 
Смежные вопросы