preg_replace - 用新值替换数据属性?

时间:2014-04-04 07:10:50

标签: php preg-replace

我正在尝试将数据属性数据注释替换为数组的新值。

$ids = array(
    '111' => '999', // replace data-note=111 with data-note= 999
    '222' => '888' // replace data-note=222 with data-note= 888
);

$html = '<span data-note="111" data-type="comment" name="a b c">el for 111 </span> text <span data-note="222" data-type="comment">el for 222 </span>';

foreach($ids as $oldKey => $newKey) {
    $patterns[] = '/data-note="[' . $oldKey . ']/';
    $replacements[] = '/data-note="[^"' . $newKey . ']"/';
}

echo preg_replace($patterns, $replacements, $html); // echos ... /data-note="[^"999]"/11" ...

我做错了什么?

1 个答案:

答案 0 :(得分:2)

[]是正则表达式中的特殊字符,你必须逃脱它们:

$patterns[] = '/data-note="\[' . $oldKey . '\]/';

此外,我想你只想:

$patterns[] = '/data-note="' . $oldKey . '"/';

更改替换部分:

$replacements[] = 'data-note="' . $newKey . '"';