У меня есть строка, подобная этой:
{{something1}} something2 {{something3}} something4
Как я могу сопоставить только «something1» с помощью функции preg_match()
?
Я пытался:
preg_match("/\{\{(.*)\}\}/si",$content,$matches);
но это соответствовало слишком много, возвращаясь
something1}} something2 {{something3
Я попробовал добавить \b
к шаблону, но не получил то, что хочу этого.
Не могли бы вы мне помочь?
Использовать не жадный модификатор ?
:
preg_match("/\{\{(.*?)\}\}/si",$content,$matches); here --^
Попробуй это:
preg_match('|{{([^}]+)}}|si', $content, $matches); echo $matches[1];
полный ответ – если наш $ var:
STARTT FIRST KKK SECOND KKK
1) В случае использования:
$var = preg_replace('/STARTT(.*)KKK/', 'REPLACED-STRING', $var);
он изменит все, начиная с STARTT и заканчивая KKK, и Result будет:
REPLACED-STRING
2) В случае использования:
$var = preg_replace('/STARTT(.*?)KKK/', 'REPLACED-STRING', $var);
Результат будет:
REPLACED-STRING SECOND KKK