2

我正在尝试使用正则表达式字符串与 PHP preg 函数(preg_match 等)一起使用,但对此我感到很困惑:

你如何匹配这个字符串?:

{area-1}some text and maybe a <a href="http://google.com">link</a>.{/area-1}

我想使用 preg_replace 将其替换为不同的字符串。

到目前为止,我已经能够使用 preg_match 识别第一个标签,如下所示:

preg_match("/\{(area-[0-9]*)\}/", $mystring);

谢谢,如果你能帮忙!

4

2 回答 2

4

如果您没有嵌套标签,那么这个简单的东西应该可以工作:

preg_match_all("~{.+?}(.*?){/.+?}~", $mystring, $matches);

然后可以在 中找到您的结果$matches[1]

于 2010-02-09T06:54:12.387 回答
0

我会建议

preg_match_all("~\{(area-[0-9]*)\}(.*?)\{/\1\}~s", $mystring, $matches);

如果其他标签嵌套在area您正在查看的标签内,这甚至会起作用。

如果您有多个area相互嵌套的标签,它仍然可以工作,但您需要多次应用正则表达式(每个嵌套级别一次)。

当然,比赛的内容将在 中$matches[2],而不是$matches[1]在 Tatu 的回答中。

于 2010-02-09T07:37:52.643 回答