Как манипулировать разрывы строк в PHP? - PullRequest
0 голосов
/ 13 декабря 2010

Я хотел знать, есть ли способ манипулировать переносами строк в PHP. Например, явно указать, какой тип перевода строки выбрать (LF, CRLF ...), например, для использования в функции explode().

это было бы что-то вроде этого:

$rows = explode('<LF>', $list);
//<LF> here would be the line break

кто-нибудь может помочь? спасибо (:

Ответы [ 2 ]

9 голосов
/ 13 декабря 2010

LF и CR являются просто аббревиатурами для символов с кодовой точкой 0x0A ( LINE FEED ) и 0x0D ( ВОЗВРАТ ЗАРЯДА ) в ASCII. Вы можете написать их буквально или использовать соответствующие escape-последовательности:

"\x0A" "\n"  // LF
"\x0D" "\r"  // CR

Не забудьте использовать двойные кавычки как одинарные кавычки знать только escape-последовательности \\ и \'.

CRLF будет тогда просто объединением обоих символов. Итак:

$rows = explode("\r\n", $list);

Если вы хотите разделить в CR и LF, вы можете выполнить разделение с помощью регулярного выражения:

$rows = preg_split("/[\r\n]/", $list);

И пропускать пустые строки (то есть последовательности из более чем одного символа разрыва строки):

$rows = preg_split("/[\r\n]+/", $list);
2 голосов
/ 13 декабря 2010

Некоторые возможности, которые я могу придумать, в зависимости от ваших потребностей:

  • Выберите стиль EOL и укажите точные символы: "\r\n"
  • Выберите EOL платформы, на которой работает PHP и используйте PHP_EOL константу
  • Используйте регулярные выражения: preg_split('/[\r\n]+/', ...)
  • Используйте функцию, которая может автоматически определять окончания строк: file()
  • Нормализовать входную строку перед взрывом:

.

<?php

$text = strtr($text, array(
    "\r\n" => PHP_EOL,
    "\r" => PHP_EOL,
    "\n" => PHP_EOL,
));
...