PHP正则表达式抢{}标签的东西{/标签}
-
19-09-2019 - |
题
我试图来=了一个正则表达式的字符串与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]
如大肚的回答。
不隶属于 StackOverflow