如何使用RegEx制作PHPBB代码?

时间:2012-05-05 01:45:10

标签: php regex parsing bbcode

对于我的网站,我想要一个简单的BB代码系统。没什么特别的 - 现在只需要超链接和图片就可以了。

我对RegExp并不擅长。期。但是如果有人能给我看一个例子,我可能会把它抓到不同的标签中。

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

我必须想象这里存在的是免费的,但这就是我要做的。

// Patterns
$pat = array();
$pat[] = '/\[url\](.*?)\[\/url\]/';         // URL Type 1
$pat[] = '/\[url=(.*?)\](.*?)\[\/url\]/';   // URL Type 2
$pat[] = '/\[img\](.*?)\[\/img\]/';         // Image
// ... more search patterns here

// Replacements
$rep = array();
$rep[] = '<a href="$1">$1</a>';             // URL Type 1
$rep[] = '<a href="$1">$2</a>';             // URL Type 2
$rep[] = '<img src="$1" />';                // Image
// ... and the corresponding replacement patterns here


// Run tests
foreach($DIRTY as $dirty)
{
    $clean = preg_replace($pat, $rep, $dirty);

    printf("D: %s\n", $dirty);
    printf("C: %s\n", $clean);
    printf("\n");
}

<强>输出:

D: Before [url]http://www.stackoverflow.com[/url] after
C: Before <a href="http://www.stackoverflow.com">http://www.stackoverflow.com</a> after

D: Before [url]http://www.stackoverflow.com[/url] [url]http://www.google.com[/url] after
C: Before <a href="http://www.stackoverflow.com">http://www.stackoverflow.com</a> <a href="http://www.google.com">http://www.google.com</a> after

D: Before [url=http://www.stackoverflow.com]StackOverflow[/url]
C: Before <a href="http://www.stackoverflow.com">StackOverflow</a>

D: Before [img]https://www.google.com/logos/2012/haring-12-hp.png[/img] after
C: Before <img src="https://www.google.com/logos/2012/haring-12-hp.png" /> after

对于您添加的每个$pat模式元素,您需要添加$rep元素。 $DIRTY数组只是一个测试用例列表,可以是您认为足够的任何长度。

此处的重要部分以及您将使用的部分是$pat$rep数组以及preg_replace()函数。

答案 1 :(得分:3)

用户要求简单的东西,所以我给了他一些简单的东西。

$input = "[link=http://www.google.com]test[/link]";
$replacement = preg_replace('/\[link=(.*?)\](.*?)\[\/link\]/', '<a href="$1">$2</a>', $input);

/\[link=(.*?)\](.*?)\[\/link\]/是正则表达式,<a href="$1">$2</a>是格式,$input是输入/数据,$replacement是返回。