У меня есть редактор BBcode wysiwyg только для базовых стилей, выделенных жирным шрифтом, курсивом и подчеркиванием.Мне нужно взять из него сохраненные данные и использовать их для преобразования их в дружественный к PHPWord массив.
PHPWord работает с чем-то, называемым textrun, поэтому, чтобы в строке было много стилей, вы бы просто сделали что-то вроде ...
$PHPWordTextRun = new TextRun();
$PHPWordTextRun->addText('This is some text that contains ', 'NORMAL');
$PHPWordTextRun->addText('Italic ', 'ITALIC');
$PHPWordTextRun->addText(' and ', 'NORMAL');
$PHPWordTextRun->addText('bold', 'BOLD');
$PHPWordTextRun->addText('text', 'NORMAL');
Я все еще не совсем уверен в том, как я делаю вложенные теги.
Так что в любом случае мне нужна помощь.Превращаем эту строку ниже ...
$string = "This is some text that contains [i]Italic[/i] and [b]bold[/b] text"
и превращаем ее в массив, подобный этому
Array("This is some text that contains ","[i]Italic[/i]","and ","[b]bold[/b]","text");
Я полный новичок в регулярных выражениях и даже не уверен, что вы будете использовать регулярное выражение здесь.
Моя конечная цель - получить что-то вроде ...
$PHPWordTextRun = new TextRun();
foreach($array as $line) {
$PHPWordTextRun->addText($line['text'], $line['style']);
}
ОБНОВЛЕНИЕ:
Так что после тестирования и игры с парой ответов, которые у меня естьпридумайте следующее.
Как предложено ниже, я попробовал следующее.
$array = preg_split('/(.*?)(\[.+?\].+?\[\/.+?\])(.*?)|(.*)/m', $txt, 0, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
Это работает до некоторой степени, но у нее было много пробелов, но исправлено с помощью PREG_SPLIT_NO_EMPTY, но это не такподдержка вложенных скобок.