PHP 传值问题?

 大美妞Buling-buling 发布于 2022-12-01 12:10
function str_emoji($str,$cdn){
  function empic($h){
    $p=dechex(str_replace(array('&#',';'),'',$h));
    return ''.$h.'';
    //$cdn无法传进来!!!
  };
  $str=preg_replace('#(\&\#[0-9]{6}\;)#ie','empic("\\1")',$str);
  return $str;
};

echo str_emoji($str,$_POST['face']);

$cdn无法传进函数??

3 个回答
  • php中的闭包中变量的作用范围和js中的稍微有点不同。要使闭包函数外的变量作用于闭包函数内,可用use关键字。参考下面一个例子:

    function test($a, $b) {
        $t = function ($c) use ($a, $b) {
            return $a + $b + $c;
        };
        return $t(3);
    }
    
    echo test(1, 2);  // 6
    2022-12-01 13:04 回答
  • $cdn不在empix()的作用域下,它是str_emoji()的全局变量。要把$cdn 传进empix()。

    2022-12-01 13:04 回答
  • //自己测试下
    function str_emoji($str,$cdn){
      function empic($h,$cdn){
        $p=dechex(str_replace(array('&#',';'),'',$h));
        return '<img src="'.$cdn.$p.'.png" alt="'.$h.'" class="smiley" />';
        //$cdn无法传进来!!!
      };
      $str=preg_replace('#(\&\#[0-9]{6}\;)#ie','empic("\\1",'.$cdn.')',$str);
      return $str;
    };
    2022-12-01 13:04 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有