2

我有一个执行以下操作的 PHP 脚本:

  • 使用 file_get_contents() 获取 html 文件的内容
  • 回显 JSON 对象

问题是从 file_get_contents 获得的值是多行的。它需要全部在一行上才能采用正确的 JSON 格式。

例如

PHP 文件:

$some_json_value = file_get_contents("some_html_doc.html");

echo "{";
echo "\"foo\":\"$some_json_value\"";
echo "}";

生成的 html 文档如下所示:

{
foo: "<p>Lorem ipsum dolor 
sit amet, consectetur 
adipiscing elit.</p>"
}

我的目标是让生成的 html 文档看起来像这样(值是一行,而不是三行)

{
foo: "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>"
}

如何才能做到这一点。我意识到如果原始 html 文档是一行,则内容将是一行;但是,我试图避免这种解决方案。

更新

问题得到了正确回答。这是完整的工作代码:

$some_json_value = file_get_contents("some_html_doc.html");
$some_json_value = json_encode($some_json_value); // this line is the solution

echo "{";
echo "\"foo\":\"$some_json_value\"";
echo "}";
4

3 回答 3

7

除了换行符之外,还有一些字符会导致您出现问题(例如双引号和反斜杠),因此与其仅仅去掉换行符,最好正确编码您的 JSON。对于 PHP >= 5.2,有内置json_encode函数,并且有可用于旧版本 PHP 的库(参见例如http://abeautifulsite.net/notebook/71

于 2009-07-14T13:51:46.290 回答
5

做一个简单的替换?

$content = str_replace(
    array("\r\n", "\n", "\r"), 
    '',
    file_get_contents('some_html_doc.html')
);

但更好的主意是立即执行json_encode()

$content = json_encode(file_get_contents('some_html_doc.html'));
于 2009-07-14T13:38:32.593 回答
0

您可以将所有出现的 \n 和 \r 替换为 ""。查看preg_replace

于 2009-07-14T13:36:25.857 回答