Tags 如何成对替换文本,例如引号或标记?

Tags 如何成对替换文本,例如引号或标记?,tags,quotes,Tags,Quotes,我想将文本^FTest转换为FTest,这样,只有在匹配和替换开始标记时,才会匹配和替换结束标记 一个简单的类比:我如何在以下两种情况之间轻松切换: This is a "simple" test, yes, a "simple" test, that's right a "simple" test. This is a [simple] test, yes, a [simple] test, that's right a [simple] test. This is a **simple**

我想将文本
^FTest
转换为
FTest
,这样,只有在匹配和替换开始标记时,才会匹配和替换结束标记

一个简单的类比:我如何在以下两种情况之间轻松切换:

This is a "simple" test, yes, a "simple" test, that's right a "simple" test.
This is a [simple] test, yes, a [simple] test, that's right a [simple] test.
This is a **simple** test, yes, a **simple** test, that's right a **simple** test.
This is a <b>simple</b> test, yes a <b>simple</b> test, that's right a <b>simple</b> test.
这是一个“简单”测试,是的,一个“简单”测试,没错,一个“简单”测试。
这是一个[简单]测试,是的,一个[简单]测试,没错一个[简单]测试。
这是一个**简单**测试,是的,一个**简单**测试,没错一个**简单**测试。
这是一个简单的测试,是的,一个简单的测试,没错,一个简单的测试。

以下PHP函数应该足够了:

function replacepairs($start, $end, $newstart, $newend, $string) {
  $changed = 1;
  while ($changed == 1) {
    $changed = 0;
    $startpos = strpos($string, $start);
    if ($startpos !== FALSE) {
      $endpos = strpos($string, $end, $startpos + strlen($start));
      if ($endpos !== FALSE) {
        $stringltstart = 0;
        $stringltlength = $startpos - $stringltstart;
        $stringlt = substr($string, $stringltstart, $stringltlength);
        $stringeqstart = $startpos + strlen($start);
        $stringeqlength = $endpos - $stringeqstart;
        $stringeq = substr($string, $stringeqstart, $stringeqlength);
        $stringgtstart = $endpos + strlen($end);
        $stringgtlength = strlen($string) - $stringgtstart;
        $stringgt = substr($string, $stringgtstart, $stringgtlength);
        $string = $stringlt.$newstart.$stringeq.$newend.$stringgt;
        $changed = 1;
      }
    }
  }
  return $string;
}

$string = 'This is a "simple" test, yes, a "simple" test, that\'s right a "simple" test.';
echo $string.'<br>'."\n";
$string = replacepairs('"', '"', '[', ']', $string);
echo $string.'<br>'."\n";
$string = replacepairs('[', ']', '**', '**', $string);
echo $string.'<br>'."\n";
$string = replacepairs('**', '**', '<b>', '</b>', $string);
echo $string.'<br>'."\n";
函数替换对($start、$end、$newstart、$newend、$string){
$changed=1;
而($changed==1){
$changed=0;
$startpos=strpos($string,$start);
如果($startpos!==FALSE){
$endpos=strpos($string,$end,$startpos+strlen($start));
如果($endpos!==FALSE){
$stringltstart=0;
$stringltlength=$startpos-$stringltstart;
$stringlt=substr($string、$stringltstart、$stringltlength);
$stringeqstart=$startpos+strlen($start);
$stringeqlength=$endpos-$stringeqstart;
$stringeq=substr($string,$stringeqstart,$stringeqlength);
$stringgtstart=$endpos+strlen($end);
$stringgtlength=strlen($string)-$stringgtstart;
$stringgt=substr($string、$stringgtstart、$stringgtlength);
$string=$stringlt.$newstart.$stringeq.$newend.$stringgt;
$changed=1;
}
}
}
返回$string;
}
$string='这是一个“简单”测试,是的,是一个“简单”测试,没错,是一个“简单”测试';
回显$string。“
”。“\n”; $string=replacepairs(“”、“”、“[”、“]”、$string); 回显$string。“
”。“\n”; $string=replacepairs('[',']','**','**',$string); 回显$string。“
”。“\n”; $string=replacepairs('**','**','''','',$string); 回显$string。“
”。“\n”;