PHPのネイティブ関数を使用してJSONを処理するため、@jeroenのソリューションをお勧めします。
しかし、あなたが質問したので、あなたのソリューションがうまくいかなかった理由を完全に理解していないと感じます。
$trimmed = str_replace("\\n", "", $response);
この理由は、「\ nを」改行文字を表していること、であるとき」:
としては、すでに「\\ n」は、このタスクのために必要なの@ B001のコメントで指摘しました\\ n "は文字列" \ n "を表します。
次のコードを試してみて、次のような出力になります違い
print("-----");
print("\n");
print("-----");
print("\\n");
print("-----");
print("\"");
が表示されます。
-----
-----\n-----"
その理由は、「\」の文字のすべてのインスタンスコードで制御文字を開始します。例としては、改行の場合は "\ n"、復帰の場合は "\ r"、タブの場合は "\ t"、実際のバックスラッシュの場合は "\"で定義された文字列の中の "キャラクター。
したがって、\ nを含む実際の文字列を作成したい場合は、\によって作成された制御文字ではなく、実際に\文字が必要であることをインタプリタに伝える必要があります。これは、実際のバックスラッシュ文字列の文字列表現である二重バックスラッシュ「\\」を使用して行います。これは「エスケープ」と呼ばれます。
あなたの場合は、$ response変数に実際の文字列があります。そのため、エスケープ文字をパターンとして使用する必要があります。
最後に、「\ n」と「\ n」の違いについて説明します。 文字列を作成するには、PHPでの2つの方法があります。「-stringながら
$str1 = "hello \n world\n";
$str2 = 'hello \n world\n';
print($str1);
print($str2);
は両方の変数が文字列が含まれていますが、しかし、「-stringは、含まれる文字列が解釈されるべきであることをPHPインタプリタのために示し、
hello
world
hello \n world\n
これは「\ nは」が含まれますので、以下のコードも\ n個のインスタンスのあなたの文字列を削除することを示しています。上記の例では、その結果は次のような出力の場合とそのままあなたの文字列を与えます制御文字ではなく実際の文字列:
\
$trimmed = str_replace('\n', "", $response);
のこの解釈 ":
$name = "Daniel";
$age = 18;
$sentence = "My Friend $name is $age years old.";
print($sentence);
とにつながる
My Friend Daniel is 18 years old.
' str_replace(-stringは、変数が文字列に挿入されるのを可能にするように、これまで行きます" \ n "、...'は私のために働きます –
'action_values'はjson自体です。 –
str_replace( "\\ n"、...私のためのトリックでした。ありがとうB001。 – heyred