Я пытаюсь взять подробности / комментарии по делу Jira и использовать детали в нашей системе поддержки / обслуживания и хочу заменить теги {code} и {noformat} на <code>
теги, так что форматирование похоже на то, что показано в Jira
Я попробовал несколько выражений регулярных выражений, но безуспешно.
Вот что я пробовал до сих пор
/({code}(?:(?!{code}).)*){code}((?:(?!{code}).)*)/
для замены всех других тегов {code} на
и /{code}/
, чтобы затем заменить оставшиеся теги {code} на <code>
Это также не учитывает вероятность того, что тег {code} может иметь теги {noformat} внутри, и их не следует заменять или наоборот.
Вот тот же код, с которым я работаю
$jira = new JiraClient\JiraClient('https://jira.url', 'myUser', 'myPass');
try {
$issue = $jira->issue()->get($ticketJira);
//$caseBody = $issue->getDescription()
//For testing Let's Hardset the caseBody
$caseBody = 'Example Code: {code}{ "fields": { "project": { "key": "JIRA" }, "summary": "Build Jira API into Support Interface to help raise cases.", "description": "Creating of an issue using project\\r\\nkeys and issue type names using the REST API\\r\\n{code}Markup Test{code}", "issuetype": { "name": "Production Task/Issue" }, "customfield_10800": [{"value":"Not applicable"}], "fixVersions": [{"name":"3.0.136.2"},], "versions": [{"name":"3.0.136.2"},] } }{code}';
// Replace {code} / noformat tags here
$descRaw = $issue->getDescription();
$despPre = preg_replace('/({code}+)/', '<code>', $descRaw,1);
$desc = preg_replace('/(.*(?:(?!{code}).)*){code}((?:(?!.*).)*)/', '\\1</code>\\2', $despPre);
echo('<label class="control-label">'.$issue->getKey().' - '.$issue->getSummary().'</label>');
echo("<p class='modal-content' style='text-align: left !important;'>".nl2br($desc)."</p>");
echo('');
}
catch (\JiraClient\Exception\JiraException $e) {
echo('<p>'.$e.'></p>');
}
У меня 2 проблемы: встроенные теги также преобразуются, и я бы хотел, чтобы это работало с тегами {noformat} вместо того, чтобы делать второй проход.