Nl2br Karşısı?

4 Cevap

Yani fonksiyon nl2br kullanışlı. Benim web uygulaması dışında, onlar önceden doldurulmuş forma yankılandı olacağından, tersini yapmak, yeni hatları gibi satır sonlarını yorumlamak istiyorum.

str_replace <br /> almak ve ne istersem onu ​​değiştirin, ama ben \ n koyarsanız, kelimenin tam anlamıyla bir ters eğik çizgi ve n yankıları olabilir. Sadece benim senaryonun ortasında bir literal satır sonu koyarsanız çalışır ve girinti kırmak (yani izleyen boşluk vardır).

Bkz:

    <?=str_replace('<br />','
',$foo)?>

Ben kaçış karakterleri eksik? Ben her kombinasyonu denedim düşünüyorum ...

4 Cevap

Yazdığınız '\n'? Çift tırnak ile onu çevreleyen \ n sadece doğru yorumlanır, çünkü: "\n".

Off topic: <?= sözdizimi kötülüktür. Ekibinizin diğer geliştiricilerin uğruna kullanmak etmeyiniz.

Bu isterdim:

<?=str_replace('<br />',"\n",$foo)?>

Muhtemelen çift tırnak kullanmayı unuttum. Eğer çift tırnak kullanırsanız dizeleri sadece özel karakterler için ayrıştırıldı.

Muhtemelen kod yeterli olmadığı bazı durumlar olacaktır; öyleyse, değiştirme yapmak için böyle bir şey, ne hakkında:

$html = 'this <br>is<br/>some<br />text <br    />!';
$nl = preg_replace('#<br\s*/?>#i', "\n", $html);
echo $nl;

i.e. a bit more complex than a simple str_replace ;-)

Not: Ben genelde don't use regex to manipulate HTML söyleyebilirim - bu durumda, regex göz önüne alındığında oldukça basit olacak ama, ben Tamam olurdu herhalde.


Also, note that I used "\n"

  • yani bir satır: \n
  • Bir double-quoted string, yani o bir satır olarak yorumlanır, ve bir sayıl \n oluyor


Basically, a <br> tag generally looks like :

  • <br>
  • veya <br/>, önce boşluk herhangi bir sayı ile /

Ve that second point is where str_replace yeterli değildir.

Ben sadece atlanır nl2br() ve bu gibi başka bir şekilde bu kullandı:

$post_content  = str_replace('\n',"<br />",$post_content );

ve tüm çalışıyor.

Tam açıklaması için, burada, benim blog ziyaret edin:

How to use nl2br and reverse br2nl