Удаление новых строк в PHP - но они по-прежнему отображаются в LONGTEXT в MySQL - PullRequest
3 голосов
/ 11 января 2011

Ello chaps.

Хорошо - очищаю мою строку следующим образом:

$clean_string = preg_replace("/[\n\r]/"," ",trim($dirty_string));

.. Выводит это на экран, и оно работает - один прекрасный большой кусок текста без перевода строки.

ВСТАВЬТЕ его в поле типа LONGTEXT в MySQL - затем просмотрите полученные данные в Sequel Pro - и по некоторым причинам у него есть новые строки.Множество их, как это было, когда оно было новым, до того, как я его почистил.

Что я делаю не так?Это длинный текст?


Вот как выглядит HTML-источник, когда я использую содержимое SO-страницы в качестве строки - обратите внимание на множество пробелов и строк новой строки - даже после очистки!

    mysql - Trouble with CONCAT and Longtext - Stack Overflow





































                Stack Exchange

Ответы [ 4 ]

2 голосов
/ 12 января 2011

Решено с помощью этого:

$clean_str = str_replace(array("\r", "\n"), '', $dirty_string);

НО - замена двойных кавычек на одинарные. Работает сейчас.

$clean_str = str_replace(array('\r', '\n'), '', $dirty_string);

Спасибо mfonda за то, что приблизили меня!

1 голос
/ 11 января 2011

Это должно работать. Также здесь нет необходимости использовать preg_replace - $clean_str = str_replace(array("\r", "\n"), '', $dirty_string) будет работать просто отлично и будет немного быстрее.

0 голосов
/ 12 января 2011

Как насчет обрезки ПОСЛЕ удаления всех новых строк?

$clean_str = trim(str_replace(array("\r", "\n"), '', $dirty_string));
0 голосов
/ 12 января 2011

$clean_string = preg_replace('/\s+/m', ' ',trim($string)); заменит каждую «последовательность пробелов» в один пробел. Попробуйте и посмотрите, работает ли он так, как ожидалось.

...