Взять, если целая часть является хвостом строковой переменной в переполнении стека

Как извлечь целочисленную часть (последнее целое число) строковой переменной в другую целочисленную переменную в PHP.

Вот текущий статус моего кода:

<?php
$path = current_path(); // eg. loading 'node/43562' to $path
$pos = strpos($path, 'node/');
if($pos>-1)die(print $pos); // sometimes $pos can be 0, may be 5 or even 26..like so
...
?>

Все, что мне нужно, это получить целую часть после 'node/' из $path только если целое число является последним в $part,

Ничего не делать, если $path является:

  • ‘Greenpage / 12432 / узел’, или же
  • ‘56372 / страница / 2321’, или же
  • ‘Узел / 56372 / страница’.

Я не хочу проходить длинные коды, такие как:

<?php
$arr = explode(":",$path);
$a= $arr[1];
$b= $arr[3];
$c= $arr[5];
...
...
?>

Я должен использовать это 43562 во многих местах.
Надеюсь, что это может быть реализовано с помощью любого простого preg_ методы или сложное регулярное выражение.

В ожидании минимального решения LOC.

0

Решение

Вы можете получить номер множеством способов.

Вот простое регулярное выражение:

preg_match('/\d+$/', $path, $match);
var_dump($match);

Если важно проверить, что префикс также есть, тогда:

preg_match('/(?<=node\/)\d+$/', $path, $match);
var_dump($match);

Вы также можете использовать strrpos() а также substr():

$slash = strrpos($path, '/');
if ($slash !== false) {
echo substr($path, $slash + 1);
}

Также возможно просто порезать строку. Это немного быстро и грязно, но работает:

$parts = explode('/', $path);
echo array_pop($parts);
1

Другие решения

$string = "foo/bar/node/1234";

if(preg_match('/node\/([0-9]+)$/', $string, $match)) {

echo $match[1];
}
1

По вопросам рекламы [email protected]