preg_replace(和其他)导致Windows上出现Javascript问题

时间:2015-09-05 13:37:23

标签: javascript php preg-replace str-replace preg-replace-callback

我遇到了一个奇怪的问题。我以前从未见过这样的东西,我找不到任何类似的问题。我在Windows 7,PHP 5.5.x和Apache。

我的框架本身就是提供javascript(例如readfile(...))。这种方法允许我即时翻译和提供javascript文件(呃!)。例如,如果JS代码包含var msg="<translate>This string</translate>";之类的smth,那么当框架提供服务时,<translate>标记将被翻译为

preg_replace_callback('/<translate>(.*?)<\/translate>/i', $callback, $content);

$callback是翻译$content的函数。

$callback可归结为这个简单的代码(仍然会导致JS渲染不正确):

$callback = function($matches) {
    return $matches[1];
};

总而言之,它在Linux上运行良好,但是当我尝试在Windows上运行时,我的Firefox拒绝解释已翻译的JS代码!

有没有人有类似的问题?

我还试过preg_replacepreg_replace_callback甚至str_replace只是为了好玩。 JS代码中的任何字符串替换都会导致客户端出错。在charset=utf-8标题中明确设置Content-Type也无济于事。

1 个答案:

答案 0 :(得分:0)

在我删除所有内容并在Chrome中再次看到Failed to load resource: net::ERR_CONTENT_LENGTH_MISMATCH消息后,我就意识到了这一点。问题是我发送了一个Content-Length标题(在我翻译我的JS文件之前,长度设置为filesize($file) 。因此问题就出现了。

我不确定为什么它可以在Linux中使用(或多或少)Apache的默认设置,但它不适用于Windows的Apache。

@ dman2306感谢您的输入!