2012-02-23 2 views
1

У меня возникла какая-то странная сложность с удалением «\ n» из данных, которые извлекаются из базы данных.str_replace/nl2br не работает как ожидалось

Данные представляют собой электронное письмо и сохраняются с помощью \ n на всем протяжении системы, которая вводит ее.

Когда я показываю это, я попытался удалить их \ п, используя следующее:

$htmlbody = str_replace("\n", "", $message['htmlbody']); 

или

nl2br($message['htmlbody']); 

но обе команды еще возвращает строку, которая полна \ п-х ,

Переменная $ message ['htmlbody'] содержит строку, такую ​​как \n\n <div>\n Example Data \n </div>\n, и эти данные остаются неизменными после прохождения через str_replace.

Данные первоначально получены из веб-узла JSON, который заменил все новые строки в HTML-письме с помощью \ n. Я также контролирую данные, которые помещаются в базу данных, и попытался использовать вышеуказанные действия над исходными данными с тем же результатом.

Любые мысли о том, что может вызвать это?

Cheers.

+6

Вы назначаете результат 'str_replace', не так ли? – knittl

+0

Да. '$ htmlbody = str_replace (" \ n "," ", $ message ['htmlbody']);' используется, а затем в данный момент я использую 'echo $ htmlbody', чтобы проверить его ... образец строки выводится как '\ n \ n

\n bjhbkhbkbhkuubuhbhjbh\n
\ n' –

+0

Вы понимаете, что вам не хватает закрывающей круглой скобки на примере' nl2br'? (Я полагаю, что это опечатка * здесь *, а не ваша проблема). –

ответ

0
$message['htmlbody'] = str_replace("\n", "", $message['htmlbody']); 

Если строка, которую вы пытаетесь изменить уже \nотображается, и не интерпретируется как новая линия, использование:

$message['htmlbody'] = str_replace("\\n", "", $message['htmlbody']); 
+0

Спасибо, но это в значительной степени то, что у меня есть на данный момент. Я попробовал это, черт возьми, и все еще имею ту же самую проблему. Вывод по-прежнему включает в себя \ n's: '\ n \ n

\n bjhbkhbkbhkuubuhbhjbh\n
\ n' –

+0

вы можете отредактировать свое сообщение и скопировать немного больше своего кода, пожалуйста –

+0

Я отредактировал свой ответ, взгляните на него –

1

нашел в поиске Google

$message = preg_replace("/\n|\r/", " ", $message['htmlbody']); 

Который заменит новые строки пробелами.

+1

ваше решение заменит символы «\ r \ n» (линия возврата строки каретки) с двумя пробелами ... – silly

+0

Исправьте меня, если я читаю его неправильно, но это должно заменить линейные каналы ИЛИ возврат каретки с одним пробелом. Пространство тривиально удалять, но, вероятно, полезно для большинства ситуаций. EDIT: Я понимаю, что вы говорите. Хммм. – buck54321

+0

смотри мой ответ, я думаю, лучше заменить сначала \ r \ n, а остальное! – silly

0

Попробуйте пройти $message через stripslashes. Вполне возможно, что у вас есть \\ п \\ г, то есть двойные косые черты, которые мешают правильно вытекание ...

$message['htmlbody'] = nl2br(stripslashes($message['htmlbody'])) 
1

заменить первый \ г \ п, то \ г, а затем \ п использовать следующее:

$message['htmlbody'] = preg_replace(array("/\r\n/", "/\r/", "/\n/"), array(' ',' ', ' '), $message['htmlbody']); 
Смежные вопросы