array_merge& strtr()不起作用

时间:2012-11-03 21:34:35

标签: php arrays array-merge strtr

嗨我strtr()有问题。

我正在创建一个网站,用户可以在其中添加表情符号,并通过输入表情符号的特殊代码在帖子中调用它们。

这就是我所做的,它在某种程度上起作用:

//FETCH FROM THE DB

while ( $row = mysql_fetch_array($fetch)) {
$table[] = array(
$row['shortcuttag1'] => "<img class='x' src='" . $row['tag1smilo'] . "' />",
$row['shortcuttag2'] => "<img class='x' src='" . $row['tag2smilo'] . "' />",
$row['shortcuttag3'] => "<img class='x' src='" . $row['tag3smilo'] . "' />",
$row['shortcuttag4'] => "<img class='x' src='" . $row['tag4smilo'] . "' />",
$row['shortcuttag5'] => "<img class='x' src='" . $row['tag5smilo'] . "' />"
);

这会创建一个多维数组,其中包含由一个用户上传的表情符号。

当我使用strtr($txt,$table[0])时,它适用于数组[0]和其他数组,但我想将特殊代码更改为位于所有子数组中及其周围的表情符号。

因此,我所做的就是像这样合并数组:

$oneDim = call_user_func_array('array_merge',$table);

我得到了所有SpecialCode =&gt;的一维数组。图像字段。

但是strtr($txt,$oneDim)停止了这个工作;它没有显示任何东西。

我很担心,因为我尝试了几种不同的方法来合并除call_user_func_array()之外的数组,它会得到相同的结果。

也许有人可以帮助我。我将非常感激。

由于

1 个答案:

答案 0 :(得分:0)

你做错了。

假设你有一个聊天框

+--------------------------------------+
|Tom: Welcome!                         |
|Terry: Hello! :)                      |
+--------------------------------------+-------+
|                                      | SEND  |
---------------------------------------+-------+

在将输出放入文本框之前,您需要解析字符串,如下所示:

<?php
   if(strpos($str, ":)")){
         $str = str_replace(':)',"<img src='smiley.png'/>",$str);
   }
?>

当您使用AJAX输出$ str var时,您将数据读回HTML。

您无需进行所有不必要的处理。

如果您需要更多帮助,我会在今天晚些时候工作后在我的网站http://www.code-genius.com/上发布教程。