У меня есть группа текстовых правил, которые структурированы следующим образом:
Rule 1: Do [XXX] when [PN] greater than [N]
Rule 2: Get [PRD ..] and add [X.XX]
Для этого используется массив данных, который переводит каждый сгруппированный код в идентификатор класса CSS (для jQuery).
У меня также есть массив переводов из [ code ] в ID, хранящийся в простом структурированном массиве, как в следующем примере:
$translate = array(
'XXX' => 'gen-string-input',
'PN' => 'gen-positivenumber-input',
'N' => 'gen-number-input'
);
Важно, чтобы было достигнуто следующее:
Мне нужно заменить каждый экземпляр [ code ] на тег span, который структурирован следующим образом:
<span class="[classname]" unique="[hash]" offset="[offset]">[CODE]</span>
Предполагается, что поля
- имя класса является результатом массива $ translate
- хэш - это хэш md5, который является статическим для каждого правила
- смещение - это положение поля в строке (например, в первом примере поле [XXX] находится в положении 0, [PN] в позиции 1 и т. д.).
Основываясь на этой информации, я ожидаю получить следующий результат для Правило 1 :
<p>
Do <span class="gen-string-input"
unique="[md5]"
offset="0">[XXX]</span>
when <span class="gen-positivenumber-input"
unique="[md5]"
offset="1">[PN]</span>
greater than <span class="gen-number-input"
unique="[md5]"
offset="2">[N]</span>
</p>
Любая помощь очень ценится, в настоящее время я использую str_replace, чтобы попытаться добиться этого, но она не достаточно хороша.