В качестве быстрого и грязного решения можно использовать:
.my-flex-child:last-child/*.product:last-child*/ {
flex-grow: 100;/*Or any number big enough*/
}
Вы можете использовать preg_replace_callback
как:
function inc($matches) {
return ++$matches[1];
}
$input = preg_replace_callback("|(\d+)|", "inc", $input);
В основном вы сопоставляете числовую часть строки с использованием регулярного выражения \d+
и заменяете ее значением, возвращаемым функцией обратного вызова, которая возвращает увеличенное значение.
В качестве альтернативы это можно сделать с помощью preg_replace()
с модификатором e
как:
$input = preg_replace("|(\d+)|e", "$1+1", $input);
Вот пример, который работал для меня, выполнив предварительный приращение значения
$admNo = HF0001;
$newAdmNo = ++$admNo;
. Вышеприведенный код выведет HF0002
Вот код Python, который делает то, что вы просите. Не слишком большой на моем PHP, но я посмотрю, смогу ли я преобразовать его для вас.
>>> import re
>>> match = re.match(r'(\D*)(\d+)(\D*)', 'AF-1234')
>>> match.group(1) + str(int(match.group(2))+1) + match.group(3)
'AF-1235'
Если строка заканчивается числовыми символами, это просто ...
$str = 'AF-1234';
echo $str++; //AF-1235
Это работает так же, как и с «345ww», хотя результат может быть не таким, каким вы ожидаете.
$str = '345ww';
echo $str++; //345wx
@ tampe125
Этот пример, вероятно, лучший метод для ваших нужд, если приращение строки, которая заканчивается цифрами.
$str = 'XXX-342';
echo $str++; //XXX-343
Если вы имеете дело со строками, имеющими несколько частей, то это не так просто решить с помощью регулярного выражения, поскольку у вас могут быть числа, переполненные из одной числовой части в другую.
Например, если у вас есть число INV00-10-99
, которое должно увеличиваться до INV00-11-00
.
В итоге я получил следующее:
for ($i = strlen($string) - 1; $i >= 0; $i--) {
if (is_numeric($string[$i])) {
$most_significant_number = $i;
if ($string[$i] < 9) {
$string[$i] = $string[$i] + 1;
break;
}
// The number was a 9, set it to zero and continue.
$string[$i] = 0;
}
}
// If the most significant number was set to a zero it has overflowed so we
// need to prefix it with a '1'.
if ($string[$most_significant_number] === '0') {
$string = substr_replace($string, '1', $most_significant_number, 0);
}