2

次のことを行うPHPスクリプトがあります。

  • file_get_contents() を使用して、html ファイルのコンテンツを取得します
  • JSON オブジェクトをエコーする

問題は、file_get_contents から取得した値が複数行になることです。正しい JSON 形式にするためには、すべてを 1 行にする必要があります。

例えば

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 ドキュメントを次のようにすることです (値は 3 行ではなく 1 行です)。

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

これはどのように行うことができますか。元のhtmlドキュメントが1行の場合、コンテンツは1行になることを認識しています。ただし、その解決策を回避しようとしています。

アップデート

質問は正しく答えられました。完全な動作コードは次のとおりです。

$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 に答える