Я пытаюсь соответствовать строке, как это:Регулярного выражения для разбора данных трубных разделителей, заключенные в двойном фигурных
{{name|arg1|arg2|...|argX}}
с регулярным выражением
Я использую preg_match
с
/{{(\w+)\|(\w+)(?:\|(.+))*}}/
но я получаю что-то вроде этого, когда я использую более двух аргументов
Array
(
[0] => {{name|arg1|arg2|arg3|arg4}}
[1] => name
[2] => arg1
[3] => arg2|arg3|arg4
)
Первые два элемента не могут содержать пробелы, а остальные могут. Возможно, я слишком долго работаю над этим, но я не могу найти ошибку - любая помощь будет принята с благодарностью.
Спасибо Jan
Хорошо, я должен уточнить то:
Я пытаюсь соответствовать неизвестное количество указанных выражений на странице HTML шаблона. , поэтому простой субстрат не является возможным ...
но вы дали мне идею;) Я буду использовать регулярное выражение, чтобы найти {{([^}] +)}}, а затем продолжить взрыв. Спасибо! – Jan
Это довольно ленивый ответ и превращает простую задачу в запись миллиона чеков, если вы действительно хотите быть уверенными. И вместо того, чтобы зачищать скобки с помощью подстроки, почему бы не сделать str_replace (array ('{', '}'), '', $ string); –
Этот ответ был написан до разъяснения. И использование str_replace() не позволяет вам ** проверить **, что скобки находятся в строке. – soulmerge