Допустим, у нас есть строка, которая выглядит примерно так:
10.000 some text 5.200 some text 5.290 some text
Что я хочу сделать, так это удалить последний ноль (если он присутствует) из всех существующих значений int в данной строке, результат должен быть:
10.00 some text 5.20 some text 5.29 some text
Есть ли удобный способ сделать это? Строки в основном сложнее, чем в приведенном примере, поэтому я ищу способ определить целочисленное значение, проверить, заканчивается ли оно 0, обрезать этот ноль и оставить измененное целочисленное значение в том же месте внутри строки.
Спасибо Cbroe, ваше решение в значительной степени то, что мне нужно, а также ответ, который я принял. Удачного дня :)
Самый быстрый способ:
$str = '10.000 some text 5.200 some text 5.290 some text';
echo str_replace('0 ',' ', $str);
Это испортит числа без десятичных знаков, хотя я не думаю, что это безопасный способ сделать это.
Хотя решение довольно простое и может сработать, теоретически, как упомянул Кристиан, я никогда не знаю, появится ли недесятичная цифра, так что это может все испортить. Спасибо за попытку.
$text = '10.000 some text 5.200 some text 5.290 some text';
$result = preg_replace('(0(?=[^0-9.]))', '', $text);
echo $result; // Output: 10.00 some text 5.20 some text 5.29 some text
Детали шаблона регулярного выражения:
( Start capturing group
0 Capturing group must start with a 0
(?= Start positive lookahead (meaning peek to the next character in the text)
[^0-9.] Make sure that the next character is not a digit or a dot
) End positive lookahead
) End capturing group
Спасибо lukas за решение, а также за подробное объяснение, определенно потребуется некоторое время, чтобы больше изучить возможности регулярных выражений в будущем. Ты сделал мой день, наслаждайся остальным.
@Čendi Обратите внимание, что существуют тестовые онлайн-сайты RegEx (например, regex101.com), они могут оказаться полезными.
Вы уже знакомы с регулярными выражениями? Если нет, начните их изучать. regex101.com/r/8CR3mD/1 — если вы используете такой шаблон с
preg_replace
и заменяете совпадение содержимым группы захвата, вы должны быть так же хороши, как и там.