PHP değişken değeri satır sonlarını ve yeni çizgileri kaldırmak?

3 Cevap php

Ben aşağıdakileri yapar bir PHP komut dosyası var:

  • Html dosyasının içeriğini almak için) (file_get_contents kullanır
  • Echos bir JSON nesnesi

Sorun file_get_contents elde değeri çok çizgi olmasıdır. Bu doğru JSON biçiminde olması için tek bir satırda bütün olması gerekir.

Örneğin

PHP Dosya:

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

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

Oluşan html belge gibi görünüyor:

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

Amacım çıkan html belge (değer bir satır, üç değil) bu gibi bakmak almak için

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

Bu nasıl yapılabilir. Ben orijinal html doc bir satır ise içeriği bir hat olacak fark; Ancak, ben bu çözümü önlemek için çalışıyorum.

Update

Soru doğru cevap. İşte tam çalışma kodu:

$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 "}";

3 Cevap

(Çift tırnaklar ve ters bölü örneğin) ve bu yüzden yerine sadece hat sonları dışarı şerit size sorunlara neden olur hat-tatili dışındaki karakterler vardır, o düzgün JSON kodlamak için daha iyi olurdu. PHP> = 5.2 yerleşik json_encode fonksiyonu var ve PHP'nin eski sürümleri için kullanılabilir kütüphaneleri (bakınız, örneğin, http://abeautifulsite.net/notebook/71) vardır

Basit bir değiştiririm?

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

Ama daha iyi bir fikir hemen bir json_encode() yapmak olacaktır;

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

Siz "" ile \ n ve \ r tüm tekrarlarını değiştirmek olabilir. Çıkış preg_replace.