Я пытаюсь реализовать эту функцию ниже. Было бы лучше использовать какой-то тип регулярных выражений здесь? Мне тоже нужно записать номер.
function endsWithNumber($string) { $endsWithNumber = false; // Logic return $endsWithNumber; }
$test="abc123"; //$test="abc123n"; $r = preg_match_all("/.*?(\d+)$/", $test, $matches); //echo $r; //print_r($matches); if($r>0) { echo $matches[count($matches)-1][0]; }
регулярное выражение объясняется следующим образом:
. *? – это займет все символы в строке от начала до тех пор, пока не будет найдено совпадение для последующей части.
(\ d +) $ – это одна или несколько цифр до конца строки, сгруппированные.
без ? в первой части только вторая цифра будет соответствовать во второй части, потому что все цифры перед ней будут заняты. *
return is_numeric(substr($string, -1, 1));
Это только проверяет, является ли последний символ в строке числовым, если вы хотите поймать и вернуть многозначные числа, вам, возможно, придется использовать регулярное выражение.
Соответствующим регулярным выражением будет /[0-9]+$/
который будет захватывать числовую строку, если она находится в конце строки.
на мой взгляд. Простой способ найти строку заканчивается номером
$length=strlen("string1")-1; if(is_numeric($string[$length])) { echo "String Ends with Number"; }