preg_replace表达式和包装表达式

时间:2015-05-26 22:29:18

标签: php tags preg-replace bbcode

所以我把这个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);
}

1 个答案:

答案 0 :(得分:0)

您的代码工作正常,您可以浏览最终的源代码,例如在(function( i ) { $("#showMe-"+categories_info[i]).click(function(){ $(".info."+categories_info.[i]).addClass("info-show"); console.log(".info."+categories_info[i]); }); })( i ); FirefoxChrome + Ctr,您会看到有U标记内的h1

您的问题是最终的html 语法不正确,可能会导致浏览器错误。 p元素中不能包含h1。你可以在网上看到很多。

在Google上搜索p

参考w3.org文档here

阅读此Will enclosing an <h1> element inside a <p> element affect SEO?

希望有所帮助