我的字符串与此类似:
{{something1}} something2 {{something3}} something4
如何使用preg_match()
函数匹配“something1”?
我试过了:
preg_match("/\{\{(.*)\}\}/si",$content,$matches);
但是匹配太多,返回
something1}} something2 {{something3
我尝试将\b
添加到模式中,但也没有得到我想要的那样。
你能帮帮我吗?
答案 0 :(得分:19)
使用非贪婪修饰符?
:
preg_match("/\{\{(.*?)\}\}/si",$content,$matches);
here --^
答案 1 :(得分:1)
一个完整的答案 - 如果我们的$ var是:
STARTT
FIRST KKK
SECOND KKK
1)如果我们使用:
$var = preg_replace('/STARTT(.*)KKK/', 'REPLACED-STRING', $var);
它将改变从STARTT到最后KKK的所有内容,结果将是:
REPLACED-STRING
2)如果我们使用:
$var = preg_replace('/STARTT(.*?)KKK/', 'REPLACED-STRING', $var);
结果将是:
REPLACED-STRING
SECOND KKK
答案 2 :(得分:0)
试试这个:
preg_match('|{{([^}]+)}}|si', $content, $matches);
echo $matches[1];