我正在尝试将数据属性数据注释替换为数组的新值。
$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" ...
我做错了什么?
答案 0 :(得分:2)
[
和]
是正则表达式中的特殊字符,你必须逃脱它们:
$patterns[] = '/data-note="\[' . $oldKey . '\]/';
此外,我想你只想:
$patterns[] = '/data-note="' . $oldKey . '"/';
更改替换部分:
$replacements[] = 'data-note="' . $newKey . '"';