PHP正则表达式将所选内容移动到字符串中的不同位置

PHP正则表达式将所选内容移动到字符串中的不同位置,php,regex,Php,Regex,我现在有这个正则表达式: $text = preg_replace("#<sup>(?:(?!</?sup).)*$key(?:(?!</?sup).)*<\/sup>#is", '<sup>'.$val.'</sup>', $text); $text=preg_replace(“#(?:(?!)您必须将preg_match()和preg_replace()组合起来 将所需内容与preg_match()匹配并存储到变量中 用相同的正则

我现在有这个正则表达式:

$text = preg_replace("#<sup>(?:(?!</?sup).)*$key(?:(?!</?sup).)*<\/sup>#is", '<sup>'.$val.'</sup>', $text);

$text=preg_replace(“#(?:(?!)您必须将preg_match()和preg_replace()组合起来

  • 将所需内容与preg_match()匹配并存储到变量中
  • 用相同的正则表达式替换为空字符串
  • 在末尾附加存储到的变量
  • 试试这个

    $text = preg_replace(
      '#<sup>((?:(?!</?sup).)*)'.$key.'((?:(?!</?sup).)*)</sup>#is', 
      '<sup>'.$val.'</sup>\1\2', 
      $text
    );
    
    $text=preg\u replace(
    
    “#((?:(?)不要将regexp与HTML一起使用!这在这里一直是有争议的。但是,正如它所显示的,在某些情况下,regex是合适的,即使对于HTML也是如此。