Я только что проверил это локально, и я думаю, что это то, что вы ищете:
preg_replace('/(\d+)/i', '<sup>$1</sup>', 'C8H9NO2')
// returns "C<sup>8</sup>H<sup>9</sup>NO<sup>2</sup>"
Вы можете сохранить это HTML, которое будет отображать каждое число как верхний индекс. Если вы хотите использовать их в качестве подписчиков, замените sup
на sub
.
Что касается хранения его в базе данных, я должен быть честным, и StackOverflow не совсем учебный веб-сайт, но вы можете создать VARCHAR
или TEXT
столбец в базе данных и просто сохранить его там. Я думаю, что лучше отформатировать текст после сохранения, чтобы вам не приходилось делать это каждый раз, когда вы отображаете страницу для каждой имеющейся формулы. Однако это зависит от вас, может быть, вам нужен необработанный текст. Я думаю, это нормально в любом случае.
РЕДАКТИРОВАТЬ
Увидев картинку снова, я заметил, что она отличается от показанной в вопросе, поэтому важно выбрать sup
или sub
соответственно. Как показано в вопросе, оно должно быть sup
; но, согласно примеру изображения, вы запрашиваете sub
. Поэтому:
preg_replace('/(\d+)/i', '<sub>$1</sub>', 'C8H9NO2')
// returns "C<sub>8</sub>H<sub>9</sub>NO<sub>2</sub>"
В вашем коде это будет выглядеть следующим образом:
<b>Molecular Formula by Element:</b> <?=preg_replace('/(\d+)/i', '<sub>$1</sub>', $row['mole_for_element'])?><br>