Преобразование пользовательских тегов сценариев в новый сценарий с тегами привязки с помощью переполнения стека

Мне нужна помощь с преобразованием строки в PHP. Я пытался делать это часами, но я могу только конвертировать простые скрипты с помощью str_replace ().

Я пытаюсь конвертировать пользовательский скрипт ниже:

<start=0:03>Line one goes here<end=0:09>
<start=0:09>Line two goes here<end=0:12>
<start=0:20>Line three goes here<end=0:26>
<start=0:32>Line four goes here<end=0:42>

В новый скрипт с тегами привязки, такими как это:

<a href="?start=0:03&end=0:09">Line one goes here</a>
<a href="?start=0:09&end=0:12">Line two goes here</a>
<a href="?start=0:20&end=0:26">Line three goes here</a>
<a href="?start=0:32&end=0:42">Line four goes here</a>

Может кто-нибудь помочь, пожалуйста?

Спасибо.

0

Решение

Для такого рода немного сложного поиска / замены наиболее удобно использовать шаблон регулярных выражений с preg_replace:

$re = '/<(start=\d+:\d+)(>.*?<)(end=\d+:\d+)>/s';
$subst = '<a href="?$1&$3$2/a>';
$result = preg_replace($re, $subst, $yourstring);

детали шаблона:

/                  # pattern delimiter
<                  # literal <
(start=\d+:\d+)    # group 1: literal "start=", one or more digits,
# literal ":" and one or more digits
(>.*?<)            # group 2: literal >, all characters until <, that must be followed
(end=\d+:\d+>)     # by capture the group 3
/s                 # pattern delimiter, and s modifier

По умолчанию . соответствует всем символам, кроме символа новой строки, модификатор s также позволяет ему соответствовать символам новой строки.

замена:

$1, $2, $3 относится к контенту, захваченному группами

1

Другие решения

Других решений пока нет …