0

我正在尝试使用我的 mysql 数据库将文本笑脸替换为图像版本

我有以下代码:

<?php
    function bbcodeParser($bbcode) {

        $sql = mysql_query("SELECT * FROM smileys");
        while( $smiley = mysql_fetch_array($sql) ) {
            $match[$smiley['match']] = $smiley['match'];
            $replace[$smiley['match']] = "<img style='max-height: 25px; max-width: 25px;' src='" . $smiley['replace'] . "' />";
        }

        /* Parse */
        $bbcode = preg_replace($match, $replace, $bbcode);

        /* Return parsed contents */
        return $bbcode;
    }
?>

但是当我使用

bbcodeParser("这是一个测试:)");

没有显示任何内容,甚至没有显示基本文本

我的数据库是:

"  match |                    Replace                        "
--------------------------------------------------------------
"   :)   | http://mysite.com/images/smileys/icon_e_smile.gif "
"   XD   |   http://mysite.com/images/smileys/icon_lol.gif   "
etc....
4

2 回答 2

3

匹配数组中的值不是有效的 preg 模式。请改用 str_replace。

$bbcode = str_replace($match, $replace, $bbcode);

或者您可以放弃构建 $match 数组并使用

$bbcode = str_replace(array_keys($replace), array_values($replace), $bbcode);
于 2013-07-12T13:43:22.670 回答
2

$match应该是模式字符串(或模式字符串数组)。这里它似乎是一个具有等效键和值的数组(为什么?!)。

在http://php.net/preg_replace查看更多信息。

于 2013-07-12T13:45:26.203 回答