3 Stimmen

Entfernen Sie Zeilenumbrüche und Zeilenumbrüche aus dem PHP-Variablenwert?

Ich habe ein PHP-Skript, das folgendes tut:

  • Benutzt file_get_contents(), um den Inhalt einer HTML-Datei abzurufen
  • Gibt ein JSON-Objekt aus

Das Problem ist, dass der Wert, der von file_get_contents abgerufen wird, mehrere Zeilen lang ist. Es muss alles in einer Zeile sein, um im richtigen JSON-Format zu sein.

Zum Beispiel

PHP-Datei:

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

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

Das resultierende HTML-Dokument sieht so aus:

{
foo: "Lorem ipsum dolor 
sit amet, consectetur 
adipiscing elit."
}

Mein Ziel ist es, dass das resultierende HTML-Dokument so aussieht (der Wert ist eine Zeile, nicht drei)

{
foo: "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
}

Wie kann das gemacht werden? Mir ist klar, dass der Inhalt eine Zeile sein wird, wenn die Original-HTML-Datei eine Zeile ist; jedoch versuche ich, diese Lösung zu vermeiden.

Update

Die Frage wurde korrekt beantwortet. Hier ist der vollständige, funktionierende Code:

$some_json_value = file_get_contents("some_html_doc.html");
$some_json_value = json_encode($some_json_value); // diese Zeile ist die Lösung

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

7voto

D. Evans Punkte 3064

Es gibt Zeichen, die außer Zeilenumbrüchen Probleme verursachen werden (zum Beispiel doppelte Anführungszeichen und umgekehrte Schrägstriche), daher wäre es besser, Ihren JSON-Code ordnungsgemäß zu kodieren, anstatt nur die Zeilenumbrüche zu entfernen. Für PHP >= 5.2 gibt es die integrierte json_encode-Funktion und es gibt Bibliotheken für ältere PHP-Versionen (siehe z.B. http://abeautifulsite.net/notebook/71)

5voto

Björn Punkte 28353

Führen Sie einen einfachen Ersatz durch?

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

Aber eine bessere Idee wäre, sofort ein json_encode() durchzuführen;

$content = json_encode(file_get_contents('some_html_doc.html'));

0voto

Alexander Trauzzi Punkte 6910

Sie können alle Vorkommen von \n und \r durch "" ersetzen. Schauen Sie sich preg_replace an.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X