Я сделал регулярное выражение в php, чтобы найти тег и атрибуты в строке html.Это работает, но работает только с первым атрибутом, а не повторяется.Следующий код возвращает мне первый атрибут и значение.
'@<barcode(\s([a-z]+)="([^"]+)").*/>@m'
Итак, я добавил плюс, чтобы он повторился, но он не будет работать.
'@<barcode(\s([a-z]+)="([^"]+)")+.*/>@m'
Что происходит последобавление плюса в том, что он выбирает только последний атрибут и значение.
Мне просто нужны все атрибуты и значения в массиве, поэтому мне интересно, что я делаю неправильно.Вот возможный HTML, который я ищу.Иногда атрибуты не всегда нужны, поэтому я должен принять это во внимание.
<barcode type="C128B" height="10" fontsize="0.4" code="testcode" align="L"/>
<barcode type="Hello"/>
<barcode type="Hello" code="balls"/>
<barcode type="C128B" height="10" fontsize="0.7" code="test" align="L"/>
У меня есть пример на regex101, чтобы увидеть проблему https://regex101.com/r/jMdA6S/1
Наше текущее приложение работает, но толькоповторяя следующие строки
'@<barcode ([a-z]+)="(.*)" ([a-z]+)="(.*)" ([a-z]+)="(.*)" ([a-z]+)="(.*)" ([a-z]+)="(.*)".*/>@m'
Это означает, что каждый раз, когда я добавляю новый атрибут, я должен добавлять еще один блок кода в регулярное выражение.Я пытаюсь избежать этого, поскольку нам иногда приходится добавлять новый атрибут для добавления различных функций.