Ответ 1
Это сработает.
$tab = "[Ami]Song lyrics herp derp [F]song lyrics continue
[C7/B]Song lyrics continue on another [F#mi7/D]line";
echo str_replace(
array('[', ']'),
array('<div class="chord">','</div>'),
$tab
);
Рассмотрим следующий пример:
[Ami]Song lyrics herp derp [F]song lyrics continue
[C7/B]Song lyrics continue on another [F#mi7/D]line
Мне нужно разобрать выше и повторить его следующим образом:
<div class="chord">Ami</div>Song lyrics herp derp <div class="chord">F</div>song lyrics continue
<div class="chord">C7/B</div>Song lyrics continue on another <div class="chord">F#mi7/D</div>line
В принципе, мне нужно:
1) измените [
на <div class="chord">
,
2), затем добавьте содержимое скобок,
3), измените ]
на </div>
.
... используя PHP 5.3 +.
Это сработает.
$tab = "[Ami]Song lyrics herp derp [F]song lyrics continue
[C7/B]Song lyrics continue on another [F#mi7/D]line";
echo str_replace(
array('[', ']'),
array('<div class="chord">','</div>'),
$tab
);
$result = preg_replace('/\[(.*?)\]/', '<div class="chord">\1</div>', $subject);
# \[(.*?)\]
#
# Match the character "[" literally «\[»
# Match the regular expression below and capture its match into backreference number 1 «(.*?)»
# Match any single character that is not a line break character «.*?»
# Between zero and unlimited times, as few times as possible, expanding as needed (lazy) «*?»
# Match the character "]" literally «\]»
попробовать
echo preg_replace('#\\[([^]]*)\\]#','<div class="chord">$1</div>',$string);
Остерегайтесь html-кода или неверного []
в вашей строке ввода, но
шаблон
\[(.*?)\]
Заменить
<div class="chord">$1</div>
Как будет использоваться все регулярное выражение, вы хотите быть осторожным с bad [] парами, и если лирика может каким-то образом содержать [тогда вы захотите правильно избежать этого.