对于我的网站,我想要一个简单的 BB 代码系统。没什么特别的——只是超链接和图像现在就可以了。
我不擅长正则表达式。时期。但是如果有人可以给我看一个例子,我可能会抓住它来克隆它到不同的标签中。
非常感谢您的帮助!
我不得不想象这在某个地方免费存在,但这就是我的做法。
// 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
and$rep
数组和preg_replace()
函数。
用户要求一些简单的东西,所以我给了他一些简单的东西。
$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
是返回。