Форматирование химических реакций на php
Есть текстовые химические реакции, выбираемые из базы, типа такой:
Ce2(SO4)3 + (NH4)2S2O8 = 2Ce(SO4)2 + (NH4)2SO4
Нужно все числа (в том числе встречаются числа с запятой) сделать подстрочными (добавить html-теги <sub>), кроме чисел в начале строки и после пробелов.
Попробовал сделать посимвольным перебором, но получается как-то сложно. Мне подсказали, что вроде как можно упростить или использованием массива или через регулярные выражения (preg_match). Регулярными выражениями нашел, как сделать все числа подстрочными, но ограничить выборку у меня не получается.
Как правильно и рационально обработать такую строку?
Ответы (1 шт):
Спасибо, splash58! В итоге получилась такая строка:
$formula = preg_replace("/(?<=[A-Za-z)\]])\d+(,\d+)*/","<sub>$0</sub>", $formula)
которая делает строку html с числами в виде подстрочных индексов. Второй, предложенный вами вариант, не берет двухзначные числа.