Как преобразовать строку из многострочной в одну строку в PHP?

Есть ли функция строки PHP, которая преобразует многострочную строку в однострочную строку?

Я возвращаю некоторые данные из API, который содержит несколько строк. Например:

<p>Some Data</p> <p>Some more Data</p> <p>Even More Data</p> 

Я присваиваю эти данные переменной, затем повторяю переменную как часть / «ячейку» документа CSV.

Это нарушает мой CSV-документ. Вместо всего содержимого, отображаемого в одной ячейке (при просмотре в OpenOffice Calc), он отображается в нескольких ячейках и строках. Он должен содержаться в одной ячейке.

Я хотел бы преобразовать строку в:

 <p>Some Data</p><p>Some more Data</p><p>Even More Data<p> 

Или, что является лучшим решением для этого?

Методы преобразования строк

Подход 1

Чтобы удалить что-либо ненужное между тегами закрытия и открытия </ p> … <p>, вы можете использовать регулярное выражение. Я не очистил его, так что это просто для справки.

 $str = preg_replace("/(\/[^>]*>)([^<]*)(<)/","\\1\\3",$str); 

Он будет лишать что-либо между тэгами p, такими как символы новой строки, пробелы или любой текст.

Подход 2

И снова с использованием метода «только для ссылок» и «переходов»

 $str = preg_replace("/[\r\n]*/","",$str); 

Подход 3

Или с более быстрым, но негибким подходом с простой заменой строк

 $str = str_replace(array("\r","\n"),"",$str); 

Возьмите выбор!

сравнение

Давайте сравним мои методы

Представление

Производительность всегда относительно быстрого подхода в этом случае второго.

(Ниже – лучше)

 Approach 1 111 Approach 2 300 Approach 3 100 

результат

Подход 1
Разделяет все между тегами

Подход 2 и 3
Полосы символов новой строки и строки

Это приведет только к удалению строк, вы, очевидно, не хотите удалять пробелы, поскольку это применимо к строке в тегах абзаца.

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

Вам просто нужно удалить все строки строки (\ n) и символы возврата каретки (\ r) из строки. В PHP это так же просто, как:

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

Лучший метод, который я нашел, чтобы сделать многострочную строку одной строкой,

 $newstring = str_replace(array("\r\n", "\n", "\r"), '', $oldstring); 

Это похоже на другие ответы, но добавляет «\ r \ n», который должен быть начальной частью массива, так что он не удваивается.

просто не мог найти ответ в приведенных выше ответах, нашел это:

$ newVariabe = preg_replace ('/ \ s + /', '_', $ oldVariable);

источник