Есть ли функция строки 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>
Или, что является лучшим решением для этого?
Чтобы удалить что-либо ненужное между тегами закрытия и открытия </ p> … <p>, вы можете использовать регулярное выражение. Я не очистил его, так что это просто для справки.
$str = preg_replace("/(\/[^>]*>)([^<]*)(<)/","\\1\\3",$str);
Он будет лишать что-либо между тэгами p, такими как символы новой строки, пробелы или любой текст.
И снова с использованием метода «только для ссылок» и «переходов»
$str = preg_replace("/[\r\n]*/","",$str);
Или с более быстрым, но негибким подходом с простой заменой строк
$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);
источник