小编Dav*_*nes的帖子

为什么PHP json_encode函数将UTF-8字符串转换为十六进制实体?

我有一个处理各种语言的PHP脚本.不幸的是,每当我尝试使用时json_encode,任何Unicode输出都会转换为十六进制实体.这是预期的行为吗?有没有办法将输出转换为UTF-8字符?

这是我所看到的一个例子:

INPUT

echo $text;
Run Code Online (Sandbox Code Playgroud)

OUTPUT

???? ????? ??????.
Run Code Online (Sandbox Code Playgroud)

INPUT

json_encode($text);
Run Code Online (Sandbox Code Playgroud)

OUTPUT

"\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u0438 \u0433\u0440\u0435\u0448\u043a\u0430."
Run Code Online (Sandbox Code Playgroud)

php encoding json

132
推荐指数
5
解决办法
17万
查看次数

简单流行算法

有很多建议的算法可以根据项目的年龄以及项目收到的投票,点击次数或购买次数来计算受欢迎程度.但是,我看到的更健壮的方法通常需要过于复杂的计算和多个存储的值,这会使数据库变得混乱.我一直在考虑一种非常简单的算法,它不需要存储任何变量(除了流行度值本身)并且只需要一个简单的计算.这简直太荒谬了:

(a * t) + ((1 - a) * p)

这里,p是存储在数据库中的流行度值,t是当前时间戳.首次创建项目时,必须初始化p.有两种可能的初始化方法:

  1. 使用当前时间戳t初始化p
  2. 使用数据库中所有p值的平均值初始化p

请注意,初始化方法(1)为最近添加的项目提供了优于历史项目的明显优势,从而添加了相关元素.另一方面,初始化方法(2)在与历史项目进行比较时将新项目视为等于.

假设您使用初始化方法(1)并使用当前时间戳初始化p.当项目收到第一次投票时,p成为创建时间和投票时间的平均值.因此,流行度值p仍表示有效时间戳(假设您舍入到最接近的整数),但它表示的实际时间是抽象的.

使用此方法,只需要一个简单的计算,并且只需要将一个值存储在数据库中(p).此方法还可以防止失控值,因为给定项目的受欢迎程度永远不会超过当前时间.

在1天 的时间内工作的算法示例:http://jsfiddle.net/q2UCn/
在1年时间内工作的算法示例:http://jsfiddle.net/tWU9y/

如果您希望投票以亚秒级间隔稳定地流入,那么您将需要使用微秒时间戳,例如PHP a函数.否则,标准UNIX时间戳将起作用,例如PHP t函数.

现在我的问题是:你看到这种方法有什么重大缺陷吗?

algorithm popularity

19
推荐指数
2
解决办法
8974
查看次数

将本地映像加载到浏览器时出现性能问题

我正在使用FileReader在Backbone应用程序中显示本地图像.较小的图像立即显示没有任何问题,但当图像是几兆字节或更大时,Chrome需要2或3秒才能加载图像(在具有8 GB RAM的全新MacBook Pro上).

正如评论中指出的那样,大型图像会在此File API教程中即时加载,因此问题不FileReader在于我在Backbone中的特定实现.

我已经包含了相关的Backbone模型并在下面查看.这是逻辑的概述:

  1. 该模型创建一个新FileReader文件路径传递到的新文件.
  2. 一旦文件被加载,一个Image被创建和srcImage被设置为通过所提供的数据的URL FileReader.
  3. 加载图像后,将使用图像的宽度和高度更新模型(在应用程序的其他位置使用)initialized,并将模型的属性设置为true(从而change在模型上触发事件).
  4. 当视图change在模型上检测到事件时,将render调用该函数,该函数将a的背景图像替换div为数据URL.

骨干模型

var PhotoModel = Backbone.Model.extend({

  initialize: function() {
    this.set({"available": true});
    this.initialized = false;
    if (this.get("file")) { 
      this.uploadPhoto();
    }
  },

  uploadPhoto: function() {
    var file = this.get("file");
    var reader = new FileReader();
    var model = this;
    reader.onload = function(event) {
      var image …
Run Code Online (Sandbox Code Playgroud)

javascript jquery html5 css3 backbone.js

18
推荐指数
1
解决办法
2753
查看次数

自定义MediaStream

我通过websockets接收原始float32音频,并希望在浏览器中播放.根据我的理解,我需要使用MediaStream API.但是,我找不到一种方法来创建一个可以附加数据缓冲区的MediaStream.

实现这个目标的正确方法是什么?

我正在尝试这样的事情:

    var context = new AudioContext();

    context.sampleRate = 48000;

    var stream = null; // ????

    var source = context.createMediaStreamSource(stream);
    source.connect(context.destination);
    source.start(0);

    socket.onmessage = function (event) {
        stream.appendBuffer(new Float32Array(event.data)); // ????
    };
Run Code Online (Sandbox Code Playgroud)

javascript html5 webkitaudiocontext

18
推荐指数
1
解决办法
930
查看次数

通过cURL提交表单并将浏览器重定向到PayPal

我正在开发一个网站,客户有多种付款方式,包括PayPal付款标准.由于我收集了大量关于客户的数据,我想在将用户发送到PayPal的服务器之前在我的服务器上处理该表单.一种选择是将数据连接成一个字符串,将字符串分配给custom字段,然后在IPN响应中处理它,但我发现这是一个非常不优雅的解决方案.相反,在收集用户数据后,我试图使用cURL提交标准的HTML PayPal表单.如何将用户重定向到PayPal以完成结帐流程?

  // Process PayPal payment
  if ($method == 'PayPal') {

    // Prepare POST data
    $query = array();
    $query['notify_url'] = 'http://example.com/ipn';
    $query['cmd'] = '_cart';
    $query['upload'] = '1';
    $query['business'] = 'email@example.com';
    $query['address_override'] = '1';
    $query['first_name'] = $first_name;
    $query['last_name'] = $last_name;
    $query['email'] = $email;
    $query['address1'] = $ship_to_address;
    $query['city'] = $ship_to_city;
    $query['state'] = $ship_to_state;
    $query['zip'] = $ship_to_zip;
    $query['item_name_'.$i] = $item['description'];
    $query['quantity_'.$i] = $item['quantity'];
    $query['amount_'.$i] = $item['info']['price'];

    // Prepare query string
    $query_string = '';
    foreach ($query as $key=>$value) {
      $query_string .= $key.'='.urlencode($value).'&'; …
Run Code Online (Sandbox Code Playgroud)

php curl paypal

17
推荐指数
1
解决办法
2万
查看次数

用于将TTF/OTF字体转换为SVG的命令行工具

有没有人知道将TTF和OTF字体转换为SVG字体的命令行工具?

fonts command-line svg file-conversion

16
推荐指数
2
解决办法
1万
查看次数

PHP:对多字节字符串安全的implode()函数是什么?

explode()函数具有相关的多字节安全功能mb_split().

我没有看到相关的功能implode().这是否意味着内爆对于多字节字符串已经安全了?

php implode multibyte

13
推荐指数
1
解决办法
3443
查看次数

从Angular中的另一个控制器刷新控制器

为了让两个控制器在Angular中相互通信,建议创建一个可供两个控制器访问的公共服务.我试图用一个非常简单的小提琴来说明这一点.根据您按下的按钮,应用程序应该定制按钮下方的消息.

那么为什么这不起作用呢?我错过了一些明显或更基本的东西吗?

HTML

<div ng-controller="ControllerOne">
  <button ng-click="setNumber(1)">One</button>
  <button ng-click="setNumber(2)">Two</button>
</div>
<div ng-controller="ControllerTwo">{{number}} was chosen!</div>
Run Code Online (Sandbox Code Playgroud)

JavaScript的

var app = angular.module('app', []);

app.factory("Service", function () {
  var number = 1;
  function getNumber() {
    return number;
  }
  function setNumber(newNumber) {
    number = newNumber;
  }
  return {
    getNumber: getNumber,
    setNumber: setNumber,
  }
});

function ControllerOne($scope, Service) {
  $scope.setNumber = Service.setNumber;
}

function ControllerTwo($scope, Service) {
  $scope.number = Service.getNumber();
}
Run Code Online (Sandbox Code Playgroud)

angularjs

13
推荐指数
2
解决办法
2万
查看次数

在MySQL数据库中存储货币值

这个问题之前已被多次提出过,但我发现有关该主题的意见相互矛盾,所以我想我会再次提出这个问题,希望得到更统一的结论.

我想在我的数据库中存储货币值.假设所有条目都是相同类型的货币(例如美元),并且允许正值和负值.

我最初的想法是将值作为有关货币的最小单位的有符号整数存储.例如,如果我想存储价值$ 1.25,我会插入125数据库,因为最小的美元单位是0.01美元.这个方法的好处是MySQL将自动舍入到最接近的整数.例如,如果美元价值为1.259美元,我可以插入125.9,这将自动舍入并存储为1261.26美元.

所以你怎么看?这是一个合理的方法还是有更好的方法?

mysql currency

12
推荐指数
1
解决办法
1万
查看次数

MySQL IN子句:最大参数数

假设您有以下查询:

SELECT * FROM table1 WHERE table1.id IN (1, 2, 3, 4, 5, ..., 999999)
Run Code Online (Sandbox Code Playgroud)

IN条款中项目数的合理最大值是多少?我正在使用Sphinx生成全文搜索结果并将ID插入MySQL查询.这是一种可接受的方式吗?

mysql

12
推荐指数
1
解决办法
1万
查看次数