выражение preg_replace и выражение обтекания

Итак, я собрал этот BB-код, который позже будет конвертировать определенные теги в HTML-теги. Все это прекрасно работает, кроме случаев, когда речь идет о теге h и теге align = center / left / right / justify (что означает <h1> а также <p style="text-align=center/left/right/justify"). Казалось бы, это мешает сценарию из-за числа 1 (число 1 относится к тексту). Как мне решить эту проблему? Я хотел бы сохранить h1 и тому подобное, но было бы замечательно, если бы вы могли выровнять его по центру, но сохранить большой текст.

function parseBBCode($sound_edit_long_desc){
$original = array(
'/\[b\](.*?)\[\/b\]/',
'/\[h\](.*?)\[\/h\]/',
'/\[i\](.*?)\[\/i\]/',
'/\[u\](.*?)\[\/u\]/',
'/\[s\](.*?)\[\/s\]/',
'/\[img\](.*?)\[\/img\]/',
'/\[url\=(.*?)\](.*?)\[\/url\]/',
'/\[code\](.*?)\[\/code\]/',
'/\[align=left\](.*?)\[\/align\]/',
'/\[align=right\](.*?)\[\/align\]/',
'/\[align=center\](.*?)\[\/align\]/',
'/\[align=justify\](.*?)\[\/align\]/'
);
$replace = array(
'<strong>\\1</strong>',
'<h1>\\1</h1>',
'<em>\\1</em>',
'<u>\\1</u>',
'<strike>\\1</strike>',
'<img src="\\1">',
'<a href="\\1" class="alink" target="_blank">\\2</a>',
'<code>\\1</code>',
'<p class="post" style="text-align: left;">\\1</p>',
'<p class="post" style="text-align: right;">\\1</p>',
'<p class="post" style="text-align: center;">\\1</p>',
'<p class="post" style="text-align: justify;">\\1</p>'
);
$new = preg_replace($original, $replace, $sound_edit_long_desc);
return nl2br($new);
}

0

Решение

ваш код работает нормально, вы можете изучить окончательный исходный код, например, в Firefox а также Chrome Нажмите Ctr+U и вы увидите, что есть h1 внутри p тег.

Ваша проблема в том, что окончательный HTML синтаксически неверный и может привести к ошибке браузера. Вы не можете иметь h1 внутри p элемент. Вы можете много читать о в Интернете.

Поиск в Google для h1 inside p tag

Обратитесь к документации по w3.org Вот

Прочитай это Будет ли вложение <h1> элемент внутри <p> элемент влияет на SEO?

Надеюсь, это поможет

0

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

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