我目前有这个正则表达式:
$text = preg_replace("#<sup>(?:(?!</?sup).)*$key(?:(?!</?sup).)*<\/sup>#is", '<sup>'.$val.'</sup>', $text);
正则表达式的目标是取<sup>[stuff here]$key[stuff here]</sup>
并删除[stuff here]
位置内的内容。
我真正想要做的是,不是删除$key[stuff here]</sup>
,而只是将内容移至$key</sup>[stuff here]
我已尝试使用$1-$4
和\\1-\\4
,我似乎无法在</sup>
答案 0 :(得分:1)
试试这个;
$text = preg_replace(
'#<sup>((?:(?!</?sup).)*)'.$key.'((?:(?!</?sup).)*)</sup>#is',
'<sup>'.$val.'</sup>\1\2',
$text
);
(?:...)*位实际上不是子模式,因此不能使用反向引用。此外,如果您对字符串文字使用'而不是',则只需要转义\和'
//干杯,莫滕
答案 1 :(得分:0)
你必须结合preg_match();和preg_replace();