я пытаюсь повторить лезвие из laravel, чтобы учиться, но я столкнулся с проблемой
при использовании preg_replace для создания парсера все идет хорошо, за исключением определенного взаимодействия со скобкой; ')'
ThisIsGonnaBeParsed.php
@if ($user->loggedIn() || true)
<p>welcome {{$user->name}}</p>
@endif
@if (true)
<p>hello</p>
@endif
PATTERN => ЗАМЕНИТЬ
'/{{(.+?)}}/s' => '<?php echo \1; ?>',
'/@if(\s|)\((.+?)\)/s' => '<?php if (\2): ?>',
'/@endif/' => '<?php endif; ?>'
как видите, все заменено, кроме того, что хранится в скобках. но что-то идет не так в результатах.
ПОЛНЫЙ РЕЗУЛЬТАТ
<?php if ($user->loggedIn(): ?> || true)
<p>welcome <?php echo $user->name; ?></p>
<?php endif; ?>
<?php if (true): ?>
<p>hello</p>
<?php endif; ?>
ЧАСТЬ С ОШИБКОЙ
<?php if ($user->loggedIn(): ?> || true)
как вы можете видеть, как только он столкнулся с) он бросил все, начиная с этой точки, в конце строки
РЕЗУЛЬТАТ, КОТОРЫЙ Я НАСТОЯЩИЙ ХОЧУ
<?php if ($user->loggedIn() || true): ?>
Я пробовал поискать в Google, но я не смог найти никаких результатов