带有&符“&”的file_put_contents

时间:2012-01-27 19:43:45

标签: php jquery

我想通过php将文件从远程服务器复制到本地服务器。我不确定这样做的“最佳”方法,所以我尝试了几种不同的方法来实现这一点,但我正在用这些方法遇到障碍。

所以我想出了一个使用JSONP的方法来(A)调用远程服务器并获取.php文件的内容并将其传递回本地服务器以获取本地脚本然后(B)调用本地脚本php脚本并使用file_put_contents将内容写入本地服务器。

所有工作都很好直到达到&符号。文件写在那里停止。


编辑以显示返回的数据。

if ($mysqlErrorConnectServer || $mysqlErrorConnectDb || $mysqlErrorConfigTableMissing) {
    $errorMsg .= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"'
                  . '"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'
                  . '<head>'
                  . '<title>Example website &copy; - Example description of example site</title>'
                  . '<style type="text/css">'

因此,如果您查看后面的代码...有一个“&amp; copy”需要在那里显示页面上的版权符号...但它会阻止file_put_contents编写其余的文件。

3 个答案:

答案 0 :(得分:3)

听起来您需要使用htmlspecialchars()对远程服务器上的文件进行编码,并在使用htmlspecialchars_decode()在本地端接收文件时对其进行解码。

更好的替代方案可能是base64_encode()远程服务器上的文件,而bas64_decode()位于本地接收服务器上。

答案 1 :(得分:0)

为什么不直接使用PHP?

<?php
$file_contents = file_get_contents('http://www.google.com/');
$handle        = fopen('new-file.html', 'w');
frwite($handle, $file_contents, strlen($file_contents));
fclose($handle);
?>

file_get_contents()的文档:http://php.net/file_get_contents

你使用AJAX的方式是另一种数据传输方式,如果可以,你应该从PHP中获取它。您的服务器将具有已知良好的互联网连接,但是用户可能连接不良,并且您要求用户下载和上传信息。

答案 2 :(得分:0)

从之前的回复中复制回答我自己的问题。

这是问题的答案。 :)知道这将是一个简单的我还没有跑过来。在将数据发送到本地写脚本之前(从远程接收回来之后),我只需将encodeURIComponent()调用到我返回的响应中,然后将其发送到本地脚本进行写入。

像魅力一样。