2009-08-18 2 views
6

У меня длинная строка в php, которая не содержит новых строк ('\ n').PHP длинная строка без новой строки

В моем соглашении по кодированию не допускаются строки длиной более 100 символов.

Есть ли способ разделить мою длинную строку на несколько строк, не используя. оператор, который менее эффективен - мне не нужно конкатцировать 2 строки, поскольку они могут быть указаны как одна строка в .

Спасибо!

Y

ответ

0

С синтаксисом heredoc (или nowdoc, в зависимости от ваших потребностей, проверьте ссылку документации):

$multiline = <<<EOT 
My name is "$name". I am printing some $foo->foo. 
This should print a capital 'A': \x41 
EOT; 
$singleline = str_replace("\n","",$multiline); 

Но это отстой ... извините :-)

+3

Проблема с heredoc заключается в том, что он будет содержать символы новой строки в строке, которые затем должны быть удалены, чтобы получить «строку, которая не содержит строк новой строки», указанную в вопросе. – Amber

+0

Вы можете разбить их, так как Lior показывает –

+0

Да, однако это также имеет удар производительности, так же как и при использовании конкатенации. – Amber

1

Вы могут лишить символы новой строки из строки:

$myStr = " 
    here is my string 
    and it is spread across multiple lines 
    "; 
    $myStr = str_replace("\n", "", $myStr); 

Вы должны все еще используйте оператор конкатенации (.) для таких вещей. Снижение производительности здесь незначительно, если вы используете кеширование кода операции (APC), и это действительно не было бы ничем заметным при использовании доступа БД и дополнительной логики (включая петли) в уравнение времени выполнения.

Update:

Дайте страницу ниже чтения. Вышеприведенное заключение не доступно в тексте, но тщательный осмотр должен показать, что он действителен.

http://blog.golemon.com/2006/06/how-long-is-piece-of-string.html

+0

Как кэширование кода операции влияет на скорость конкатенации строк? –

+0

Парсер будет обрабатывать строки без динамических элементов, чтобы быть одной длинной строкой, отбрасывая операции конкатенации. Я недавно врылся в эту тему. Обновите этот ответ со связанной статьей, как только мне удастся найти его снова. –

2

Это правильный код, который решал все вопросы:

$myStr = " 
    here is my string 
    and it is spread across multiple lines 
    "; 
    $myStr = str_replace(array("\r","\n"), "", $myStr); 

Он основан на ответ Лиора Коэна, но и полоса возврата каретки «\ г».

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