2011-07-05 16 views
6

neden olabilir: preg_replace("/\\n/", "<br />", $string); çalışmıyor.preg_replace n dizesinde

Dize çıktıları bu biçimde: blah blah blah\nblah blah blah preg değiştirildikten sonra bile.

Tüm yapmak istediğim, <br /> için değiştirmektir.

nl2br() da çalışmıyor, ancak metin olarak, gerekip gerekmediğinden emin değildim.

Teşekkür

** Güncelleme **

dizesinde bir kelime üzerinde preg_replace çalışır. Eğer literal \n değil gerçek yeni hat değiştirmek istiyorsanız :(

+4

Gerçekten çıktı mı? \ N? Eminim, bu sadece bir '\' ve 'n' değil, bir satırsonu mu? – KingCrunch

+0

hayır ... bu yüzden nl2br'ın çalışamayacağımı ve neden \ nn 'pre-prep'de değiştirdiğimi anladım' \ ' –

+0

Veritabanına girmiyorum ... bu sadece bir web sitesinde görüntülemek için. –

cevap

5

bu

str_replace("\n", "<br />", $string); 
+0

, felix önerildiği gibi tek tırnak işareti ile çalışır. :) teşekkürler –

+0

Bu tek tırnak işareti ile çalışabilir (ve aslında, tek tırnaklı preg_replace benim test komutum için çalışmıyor), ama preg_replace neden işe yaramayacağını açıklamıyor. – NotoriousWebmaster

+0

Çoğu durumda tek tırnak işaretleri ile çalışmaz. –

7

deneyin deneyin:

<?php 
echo preg_replace("/\\\\n/", "<br />", 'Hello\nWorld'); 

Bildirimi ters eğik sayısı çift tırnak içine. string /\\\\n/, PHP motoru tarafından /\\n/ olarak yorumlanır. Bu dize, preg motoruna iletildiğinde, \n

olarak yorumlanır.

Her iki PHP'nin de "\n" ASCII karakteri 0x0A olarak yorumlayacağını unutmayın. Benzer şekilde, preg motoru '/\n/''u yeni satır karakteri olarak yorumlayacaktır (hangisinin hangisi olduğundan emin değil).

+0

'' Merhaba \ nWorld '' tek tırnaklı olduğundan, acutal bir satırsonu değiştirmeyi test etmiyorsunuz. Bu çalışır: echo preg_replace ("/ \\ n /", "", "bu ki"); '(Bu" ve "o" arasındaki boşluğa bir sonraki satıra girip teklifi kapatarak değiştirin.). –

4

RegEx'inizde birden çok satır değiştirici ile denediniz mi?

preg_replace("/\\n/m", "<br />", $string); 
+0

+1 '\ n', çok satırlı moda gereksinim duyar. – hakre

+0

Diğer çıkışlar ile diğer cevap, bu durumda doğru cevaptır. Aynı problemle karşı karşıya kaldım, metinde 'n' karakteri var, ardından 'n' karakteri bulunuyor ve amaç tek bir 0x0A satır karakteri ile değiştirmektir. – KenB

İlgili konular