PHP替换标签与正则表达式

时间:2010-12-18 01:11:54

标签: php regex preg-replace

我有时间替换两个标签之间的数据。我无法弄清楚匹配这种模式的正则表达式。 My tags are simply <!-- Model # Start --> and <!-- Model # End -->

代码:

        $products[''.$row[0].''][2] = preg_replace("/(<!-- Model # Start -->).*(<!-- Model # End -->)/i", "$1$2", $products[''.$row[0].''][2]);
        echo $products[''.$row[0].''][2] . "\n";

数据:$ products [''。$ row [0]。''] [2]

Economical. 7 mils thick, tough & stretchy. Each roll cellophane wrapped. UL listed.

<!-- Model # Start -->
<p style='text-align: right;'>16736</p>
<!-- Model # End -->

2 个答案:

答案 0 :(得分:1)

尝试:

/(.*<!-- Model # Start -->).*(<!-- Model # End -->.*)/im

请注意多行匹配的 m 标志。

如果你有多次出现的标签,你可以使用一个不情愿的量词来获得第一场比赛,或者使用环视。

http://rubular.com/有助于测试。

答案 1 :(得分:0)

我会这样匹配......

$match = 'Model\s#\s';

preg_replace('/<!--\s?' . $match . 'Start\s?(.*?)\s?' . $match . 'End\s?-->/i', '<span>$1</span>', $row);