请创建一个wap论坛,我希望管理员能够从名为mycodes的数据库添加bbcodes列:id,name,code,html
Row1
Name: bold
Code: \[b\](.*?)\[/b]
Html: < b >$1< / b >
Row2
Name: undaline
Code: \[u\](.*?)\[/u]
Html: < u >$1< / u >
当我使用preg替换它时,只有当我有一行时,如果我有多个它不会工作,它只会解析粗体而不是下划线?
function myparse($text){
$q = mysql_query("SELECT * FROM mycodes");
while($row = mysql_fetch_array($q)) {
$code=$row['code'];
$html=$row['html']
$Result=preg_replace('#'.$code.'#is', $html, $text);
return $result;
}
}
myparse("hey am [b]bold[/b] but he is [u]undalined[/u]");
答案 0 :(得分:1)
为什么重新发明轮子:
http://www.christian-seiler.de/projekte/php/bbcode/index_en.html(也有一些替代方案的链接)
甚至是PECL lib:http://uk1.php.net/manual/en/book.bbcode.php
答案 1 :(得分:0)
我的myparse函数中没有看到任何循环遍历代码行的内容。因此,根据您当前的代码,您需要一个循环来多次调用preg_replace:
function myparse($text){
// Loop through rows (this might be a database or whatever stores your rows.
// Since your code doesn't tell us I'll assume it's an array for now
foreach ($rows as $row) {
$code=$row['code'];
$html=$row['html'];
$Result=preg_replace('#'.$code.'#is', $html, $text);
}
}
答案 2 :(得分:0)
您的代码中有几处错误。正确的功能应该是这样的:
function myparse($text){
$q = mysql_query("SELECT * FROM mycodes");
while($row = mysql_fetch_array($q)) {
$code=$row['code'];
$html=$row['html']
$text=preg_replace('#'.$code.'#is', $html, $text);
}
return $text;
}
在你的代码中 - 实际上只使用了mycodes中的第一行。