Привет, я хочу удалить символы, используя preg_replace в php, поэтому у меня есть этот код здесь, который я хочу удалить целые символы, буквы и цифры, кроме последней цифры, у которой есть символ (()), а затем цифры код.
echo preg_replace('/(.+)(?=-[0-9])|(.+)/','','asdf1245-10');
Я ожидаю, что результат будет
-10
проблема выше не работает очень хорошо. Я проверил шаблон, используя http://www.regextester.com/, похоже, что он работает, но с другой стороны http://www.phpliveregex.com/ не работает вообще. Я не знаю, почему, но кто может помочь понять это?
большое спасибо
Вот путь:
echo preg_replace('/^.+?(-[0-9]+)?$/','$1','asdf1245-10');
Вывод:
-10
а также
echo preg_replace('/^.+?(-[0-9]+)?$/','$1','asdf124510');
Вывод:
<nothing>
Другой путь:
$result = preg_match('~\A.*\K-\d+\z~', $str, $m) ? $m[0] : '';
шаблон детали:
\A # start of the string anchor
.* # zero or more characters
\K # discard all on the left from match result
-\d+ # the dash and the digits
\z # end of the string anchor
echo preg_replace('/(\w+)(-\w+)/','$2', 'asdf1245-10');
Мое первое мышление заключается в том, чтобы использовать взрыв в этом случае. Сделайте его простым, как следующий код.
$string = 'asdf1245-10';
$array = explode('-', $string);
end($array);
$key = key($array);
$result = '-' . $array[$key];
$ result => '-10';