我正在尝试使用正则表达式字符串与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);
谢谢,如果你能提供帮助!
答案 0 :(得分:4)
如果你没有嵌套标签,这个简单的东西应该有用:
preg_match_all("~{.+?}(.*?){/.+?}~", $mystring, $matches);
然后可以在$matches[1]
中找到您的结果。
答案 1 :(得分:0)
我建议
preg_match_all("~\{(area-[0-9]*)\}(.*?)\{/\1\}~s", $mystring, $matches);
如果其他标记嵌套在您正在查看的area
标记内,这甚至可以使用。
如果你有几个area
标签嵌套在一起,它仍然有效,但你需要多次应用正则表达式(每个嵌套级别一次)。
当然,匹配的内容将在$matches[2]
中,而不是像Tatu的答案中的$matches[1]
。