PHP
Проверка наличия первой цифры строки 1
. Как я могу это сделать? Также как проверить, находится ли строка между 27-34
. Будет strlen($variable) == 27-34
работы?PHP Проверка, если первая цифра строки равна 1?
Спасибо.
PHP
Проверка наличия первой цифры строки 1
. Как я могу это сделать? Также как проверить, находится ли строка между 27-34
. Будет strlen($variable) == 27-34
работы?PHP Проверка, если первая цифра строки равна 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)
Спасибо, проверим. – user2609179
Ошибка анализа: синтаксическая ошибка, непредвиденная 'preg_match' (T_STRING) в C: \ xampp \ htdocs \ address_process.php в строке 24 – user2609179
Могу ли я узнать значение yourNumber и какой ответ вы использовали (A1? A1b?) –
Чтобы проверить, если первая цифра строки равна 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
}
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";
Если вы пытаетесь сделать обе проверки на один раз, вы можете использовать регулярные выражения, как это:
$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.
Если я не читал этот вопрос неправильно, вы хотели бы знать, если первая цифра в строке является число 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);
}
'substr()'? '[]'? 'Intval()'? Вы что-то пробовали? – Passerby
Да, но как я могу установить его для проверки только первой цифры? – user2609179
звучит как домашнее задание – jjclarkson