How can PHP developers ensure that line breaks are only inserted when necessary in BBCode translation?

To ensure that line breaks are only inserted when necessary in BBCode translation, PHP developers can use a regular expression to detect when a line break is needed based on the BBCode tags present in the input text. By checking for specific BBCode tags that require line breaks, developers can insert line breaks accordingly while ignoring unnecessary line breaks.

function bbcode_to_html($bbcode) {
    $bbcode = preg_replace('/\[list\](.*?)\[\/list\]/s', '<ul>$1</ul>', $bbcode);
    $bbcode = preg_replace('/\[list=(.*?)\](.*?)\[\/list\]/s', '<ol start="$1">$2</ol>', $bbcode);
    $bbcode = preg_replace('/\[\*\](.*?)\[\/\*\]/', '<li>$1</li>', $bbcode);
    $bbcode = preg_replace('/\[b\](.*?)\[\/b\]/', '<strong>$1</strong>', $bbcode);
    $bbcode = preg_replace('/\[i\](.*?)\[\/i\]/', '<em>$1</em>', $bbcode);

    return nl2br($bbcode);
}

$bbcode = "[list][*]Item 1[*]Item 2[/list]";
$html = bbcode_to_html($bbcode);
echo $html;