I have a group of text based rules that are structured like this:
Rule 1: Do [XXX] when [PN] greater than [N] Rule 2: Get [PRD ..] and add [X.XX]
To go with this is an array of data that translates each grouped code into a CSS class ID (for jQuery).
I also have an array of translations from [code] to ID stored in a simple structured array, like the following example:
$translate = array(
'XXX' => 'gen-string-input',
'PN' => 'gen-positivenumber-input',
'N' => 'gen-number-input'
);
It is important that the following can be achieved:
I need to replace each instance of [code] with a span tag that is structured like this:
<span class="[classname]" unique="[hash]" offset="[offset]">[CODE]</span>
This is assuming that the fields are
- classname is the result of the $translate array
- hash is an md5 hash that is static for each rule
- offset is the position of the field in the string (e.g. in the first example, field [XXX] is at position 0, [PN] at position 1 and so on).
Based on this information, I would expect to achieve the following output for Rule 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>
Any help is greatly appreciated, I am currently using str_replace to try and achieve this but it is just not good enough.