2011-07-05 4 views
6

по некоторым причинам: preg_replace("/\\n/", "<br />", $string); не работает.preg_replace n в строке

Строковые выходы в этом формате: blah blah blah\nblah blah blah даже после замены preg.

Все, что я хочу сделать, это изменение, если для <br />.

nl2br() также не работает, но в качестве его простого текста я не был уверен, следует ли это делать.

Благодаря

** Обновление **

в preg_replace работы на слово в строке. :(

+4

Действительно выдает '\ n'? Вы уверены, что это новая строка, а не только '\' и 'n'? – KingCrunch

+0

нет ... вот почему я решил, что nl2br не сработает, и почему у меня было '\\ n' в моей замене preg, чтобы избежать' '' –

+0

Я не вставляю в базу данных ... это просто для отображения на веб-сайте. –

ответ

5

попробовать этот

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

работает с одинарными кавычками, как предположил Феликс. :) thanks –

+0

Это может работать с одинарными кавычками (и на самом деле preg_replace с одинарными кавычками НЕ работает для моего тестового скрипта), но это не объясняет, почему preg_replace не будет работать. – NotoriousWebmaster

+0

В большинстве случаев он не работает с одинарными кавычками. –

7

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

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

Обратите внимание на количестве обратных косых черт двойная кавычка прилагается. строка /\\\\n/ интерпретируется двигателем PHP как /\\n/. Эта строка при передаче на двигатель preg интерпретируется как буква \n.

Обратите внимание, что оба PHP интерпретируют "\n" как символ ASCII 0x0A. Аналогично, движок preg интерпретирует '/\n/' как символ новой строки (точно не уверен, какой из них).

+0

Потому что '' Hello \ nWorld'' одинарная кавычка, вы не проверяете замену acutal newline. Это работает: 'echo preg_replace ("/\\ n/"," "," this that ");' (Замените пробел между «этим» и «тем», нажав Enter и закрывая цитату на следующей строке.). –

4

Вы пробовали с помощью нескольких модификаторов линий на вашем RegEx?

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

+1 '\ n' нуждается в многострочном режиме. – hakre

+0

Другим ответом с дополнительными экранами является правильный ответ в этом случае. Я столкнулся с той же проблемой, текст имеет символ '\', за которым следует символ 'n', и цель состоит в том, чтобы заменить его единственным символом новой строки 0x0A. – KenB

Смежные вопросы