【问题标题】:preg_replace expression and wrapping expressionpreg_replace 表达式和包装表达式
【发布时间】:2015-08-08 19:18:55
【问题描述】:

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

【问题讨论】:

  • 您能否提供一个$sound_edit_long_desc 的示例以使用parseBBCode 函数进行测试?
  • @Kstro21 [align=center][h]测试文本[/h][/align]

标签: php tags preg-replace bbcode


【解决方案1】:

您的代码工作正常,您可以探索最终的源代码,例如在FirefoxChromeCtr+U,您会看到p 内有一个h1标记。

您的问题是最终的 html 语法不正确,可能会导致浏览器错误。 p 元素内不能有 h1。您可以在网络上阅读很多相关信息。

在谷歌上搜索h1 inside p tag

咨询 w3.org 文档here

阅读此Will enclosing an &lt;h1&gt; element inside a &lt;p&gt; element affect SEO?

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2016-07-11
    • 1970-01-01
    • 2012-12-16
    • 2012-09-10
    • 2011-05-20
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多