仅在<code></code>之间匹配所有标签

时间:2015-04-20 09:57:05

标签: php regex

示例文本

    Hello
    World

<pre><code>&lt;VirtualHost *:80&gt;
    ServerAdmin abc@gmail.com
    DocumentRoot &quot;C:\wamp\www\abc\public&quot;
    ServerName abc.local
    ErrorLog &quot;logs/abc.local-error.log&quot;
    CustomLog &quot;logs/abc.local-access.log&quot; common
&lt;/VirtualHost&gt;
</code></pre>

<pre><code>&lt;VirtualHost *:80&gt;
    ServerAdmin abc@gmail.com
    DocumentRoot &quot;C:\wamp\www\abc\public&quot;
    ServerName abc.local
    ErrorLog &quot;logs/abc.local-error.log&quot;
    CustomLog &quot;logs/abc.local-access.log&quot; common
&lt;/VirtualHost&gt;
</code></pre>

    Hello
    World

我想仅在<code></code>之间匹配所有标签,我尝试使用/(<code>)*([\t])+/g,但它仍然匹配所有标签(无处不在),我打算稍后用2个空格替换这些标签

请指导或提示我一些正则表达式,谢谢

1 个答案:

答案 0 :(得分:0)

试试这个,首先匹配代码之间的任何内容

$txt='<code>test</code>';

  $re1='(<code>)';  # Tag 1
  $re2='.*?';   # Non-greedy match on filler
  $re3='(<\\/code>)';   # Tag 2

  if ($c=preg_match_all ("/".$re1.$re2.$re3."/is", $txt, $matches))
  {
      $tag1=$matches[1][0];
      $tag2=$matches[2][0];
      print "($tag1) ($tag2) \n";
  }

然后在此结果上,使用您的reg表达式