【问题标题】:array_merge & strtr() doesn't workarray_merge & strtr() 不起作用
【发布时间】:2012-11-03 21:34:35
【问题描述】:

您好,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 => 图像字段的一维数组。

但是strtr($txt,$oneDim) 停止使用它;它没有显示任何内容。

我很担心,因为我尝试了几种不同的方法来合并数组而不是call_user_func_array(),它给出了相同的结果。

也许有人可以帮助我。我将不胜感激。

谢谢

【问题讨论】:

  • 为什么不首先使用str_replace
  • @Baba $table[] = array(); 看起来肯定有一个索引 0 以及更多的索引,具体取决于有多少 mysql_fetch_array 将返回。
  • 大家好! str_replace 工作正常,非常感谢。
  • @dbf ..你是对的...不错+1
  • dbf,能否请您在此问题中添加您的答案,以便 Agi Hammerthief 将该问题标记为“已回答”?

标签: php arrays array-merge strtr


【解决方案1】:

你做错了。

假设你有一个聊天框

+--------------------------------------+
|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/ 上发布教程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    • 2018-08-17
    • 1970-01-01
    相关资源
    最近更新 更多