我试图来=了一个正则表达式的字符串与PHP预浸函数(的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);

谢谢如果你能帮助!

有帮助吗?

解决方案

如果你没有嵌套的标签,这个东西应该简单工作:

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

您结果可以在$matches[1]被随后找到。

其他提示

我建议

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

如果其他标记嵌套你看area标签内这会甚至工作。

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

当然,比赛中的内容将在$matches[2],不$matches[1]如大肚的回答。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top