我有一组基于文本的规则,其结构如下:
Rule 1: Do [XXX] when [PN] greater than [N] Rule 2: Get [PRD ..] and add [X.XX]
与此相关的是一组数据,它将每个分组代码转换为CSS类ID(对于jQuery)。
我还有一系列从[代码]到存储在简单结构化数组中的ID的翻译,如下例所示:
$translate = array(
'XXX' => 'gen-string-input',
'PN' => 'gen-positivenumber-input',
'N' => 'gen-number-input'
);
重要的是要实现以下目标:
我需要将[代码]的每个实例替换为结构如下的span标记:
<span class="[classname]" unique="[hash]" offset="[offset]">[CODE]</span>
这假设字段是
根据这些信息,我希望为规则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来尝试实现这一点,但它还不够好。
答案 0 :(得分:0)
好的,实际上你需要的是preg_replace_callback
。请参阅递归回调示例。
答案 1 :(得分:0)
遍历translate数组,用值
替换字符串中的键$string = '[CODE]'; $translate = array('classname' => 'oddRow', 'hash' => 'abcdef'); foreach($translate AS $key=>$value) { $string = str_ireplace('[' . $key . ']', $value, $string); }