preg_replace 表达式和环绕表达式
preg_replace expression and wrapping expression
所以我整理了这个 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);
}
你的代码工作正常,你可以探索最终的源代码,例如在 Firefox
和 Chrome
中按 Ctr
+U
你会看到是 p
标签内的 h1
。
您的问题是最后的 html 语法不正确 并且可能导致浏览器错误。 p
元素中不能有 h1
。您可以在网络上阅读很多内容。
在 google 中搜索 h1 inside p tag
查阅 w3.org 文档 here
读这个Will enclosing an <h1>
element inside a <p>
element affect SEO?
希望对您有所帮助
所以我整理了这个 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);
}
你的代码工作正常,你可以探索最终的源代码,例如在 Firefox
和 Chrome
中按 Ctr
+U
你会看到是 p
标签内的 h1
。
您的问题是最后的 html 语法不正确 并且可能导致浏览器错误。 p
元素中不能有 h1
。您可以在网络上阅读很多内容。
在 google 中搜索 h1 inside p tag
查阅 w3.org 文档 here
读这个Will enclosing an <h1>
element inside a <p>
element affect SEO?
希望对您有所帮助