Я создал простой шаблонизатор / анализатор контента, где вы можете указать, где блоки текста должны быть размещены на конечной странице вывода.«Разметка», на которой я остановился, - это что-то вроде @blockname> в отдельной строке.Таким образом, чтобы поместить блок текста в тело, вы должны начать текст с @body>.Имя блока может быть любым, что вы хотите использовать, но оно не может содержать пробелов или разрывов строк.
Все работает нормально, за исключением случаев, когда в текст встроена текстовая строка типа @body>.Он также разбивается на встроенный текст.Это кажется очень простым, я просто хочу сопоставить строку, начинающуюся с @, за которой следуют любые непробельные символы и заканчивающиеся> в конце строки.Моя команда, которая сейчас работает, почти работает:
preg_split('/@([^\s].*?[^>])>/', $tpl, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
Кажется, я должен просто использовать ^ @ ([^ \ s]. *? [^>])> $, Но этоне работает вообще.Я чувствую, что упускаю что-то простое.Я попробовал несколько модификаторов в конце, но безрезультатно.
Пример текста для разбора:
@css>
.example {font-weight:bold;}
@js>
function example() {
alert('example');
}
@body>
This is some sample @body> text to show
В идеале разделение регулярных выражений вернулось бы:*