代码之家  ›  专栏  ›  技术社区  ›  tombazza

PHP:解析字符串以执行替换

  •  0
  • tombazza  · 技术社区  · 17 年前

    我有一组基于文本的规则,其结构如下:

    Rule 1: Do [XXX] when [PN] greater than [N]
    Rule 2: Get [PRD ..] and add [X.XX]
    

    我还有一系列来自[ 密码

    $translate = array(
        'XXX' => 'gen-string-input', 
        'PN' => 'gen-positivenumber-input',
        'N' => 'gen-number-input'
    );
    

    必须做到以下几点:

    我需要替换每个实例[ ]具有如下结构的跨度标记:

    <span class="[classname]" unique="[hash]" offset="[offset]">[CODE]</span>
    

    这是假设字段为

    • 类的名称
    • 搞砸 是每个规则的静态md5哈希
    • 抵消 [XXX] 在0位置, [请注意]

    规则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>
    

    非常感谢您的帮助,我目前正在使用stru_replace来尝试实现这一点,但这还不够好。

    2 回复  |  直到 13 年前
        1
  •  0
  •   vartec    17 年前

    好的,实际上你需要的是 preg_replace_callback . 请参阅递归回调示例。

        2
  •  0
  •   Adam Hopkinson    17 年前

    $string = '[CODE]';
    $translate = array('classname' => 'oddRow', 'hash' => 'abcdef');
    
    foreach($translate AS $key=>$value)
    {
    $string = str_ireplace('[' . $key . ']', $value, $string);
    }
    
    推荐文章