Используйте захваченные группы.
$result = preg_match('/\[start\](.+)\[end\]/',$str, $m);
$matched = $m[1];
(обратите внимание, что ваше регулярное выражение не будет выполнено, если существует несколько групп [start]
/ [end]
(требуется ленивый квантификатор .+?
) или вложенный [start]
/[end]
групп (используйте рекурсивный шаблон).)
Если вам не нужны пробелы, вы можете избежать сопоставления их в регулярном выражении:
$result = preg_match('/\[start\]\s*(.+?)\s*\[end\]/',$str, $m);
$matched = $m[1];
или просто вызватьtrim()
.
$result = preg_match('/\[start\](.+)\[end\]/',$str, $m);
$matched = trim($m[1]);