使用 preg_replace() 将 URL 从 UBB/phpBB 标记转换回 HTML

问题描述 投票:0回答:1

如何将这些类型的 UBB 代码转换回 HTML? 我的粗体、斜体和下划线功能是:

function convertFromUBB($articleBody){
   $articleBody = preg_replace( "#\[b\](.+?)\[/b\]#is", "<b>\\1</b>", $articleBody );
   $articleBody = preg_replace( "#\[u\](.+?)\[/u\]#is", "<u>\\1</u>", $articleBody ); 
   $articleBody = preg_replace( "#\[i\](.+?)\[/i\]#is", "<i>\\1</i>", $articleBody );     
    return $articleBody;
}

用于 URL 替换的示例 UBB 代码有两种格式:

[url]www (dot) domain (dot) com[/url] which would translate to <a href=" http: //www(dot) domain (dot)com">domain(dot) com</a>

and

[url=" http: //www(dot) domain(dot) com"]www. domain .com[/url] which would also translate to <a href=" http: //www. domain. com">www .domain. com</a>

抱歉,我不知道如何编写示例 URL。

将 [URL] UBB 标记转换回 HTML 我发现很难编写适当的

preg_replace()
并且无法找到 google 结果。 提前谢谢

php
1个回答
0
投票

使用两个正则表达式,一个用于

[url]www.XXX[/url]
,另一个用于
[url="XXX"]YYY[/url]
。第一个可以在
http://
标签中创建 URL 时添加
<a>
前缀。第二个简单地使用给定的
XXX

$articleBody = preg_replace('#\[url\](www\.(.*?))\[/url\]#is', '<a href="http://$1">$2</a>', $articleBody);
$articleBody = preg_replace('#\[url="(.*?)"\](.*?)\[/url\]#is', '<a href="$1">$2</a>', $articleBody);

顺便说一句,文档说

$1
优于
\1
来引用捕获组。

© www.soinside.com 2019 - 2024. All rights reserved.