2010-04-28 10 views
24
$var = "Hi there"."<br/>"."Welcome to my website"."<br/>;" 
echo $var; 

Czy istnieje elegancki sposób obsługi łamania linii w PHP? Nie jestem pewien co do innych języków, ale C++ ma eol, więc coś, co jest bardziej czytelne i eleganckie w użyciu?Eleganckie rozwiązanie łamania wierszy (PHP)

Dzięki

+0

możliwy duplikat [Jak usunąć znaki linii (bez znaków!) Z ciągu znaków?] (Http://stackoverflow.com/questions/10757671/how-to-remove-line-breaks-no-characters- from -the-string) – kenorb

Odpowiedz

1

skończyło się na napisanie funkcji, która pracowała dla mnie dobrze do tej pory:

// pretty print data 
function out($data, $label = NULL) { 

    $CLI = (php_sapi_name() === 'cli') ? 'cli' : ''; 

    $gettype = gettype($data); 

    if (isset($label)) { 
    if ($CLI) { $label = $label . ': '; } 
    else { $label = '<b>'.$label.'</b>: '; } 
    } 

    if ($gettype == 'string' || $gettype == 'integer' || $gettype == 'double' || $gettype == 'boolean') { 
    if ($CLI) { echo $label . $data . "\n"; } 
    else { echo $label . $data . "<br/>"; } 
    } 
    else { 
    if ($CLI) { echo $label . print_r($data,1) . "\n"; } 
    else { echo $label . "<pre>".print_r($data,1)."</pre>"; } 
    } 
} 


// Usage 

out('Hello world!'); 

$var = 'Hello Stackoverflow!'; 
out($var, 'Label'); 
0

Ponieważ jesteś wyprowadzanie do przeglądarki, trzeba użyć <br/>. W przeciwnym razie istnieje \n i \r lub oba połączone.

41

Na wierszami PHP jak "\n"(patrz double quote strings) i PHP_EOL.

Tutaj używasz <br />, która nie jest łamaniem wiersza PHP: jest linią podziału HTML.


Tutaj można uprościć to, co pisał (z wierszami HTML): nie ma potrzeby strun powiązań,: można umieścić wszystko w jednym ciągu, tak:

$var = "Hi there<br/>Welcome to my website<br/>"; 

Lub wykorzystujące linebreaks PHP:

$var = "Hi there\nWelcome to my website\n"; 

Uwaga: można też chcą przyjrzeć się funkcji nl2br(), który wstawia <br> przed \n.

+2

'nl2br()' tak naprawdę nie * konwertuje * nowych linii do '
'. To, co robi, zwraca dany ciąg z '
' wstawionym przed wszystkimi znakami nowej linii lub '
'. –

+0

Gdy mój php zwróci "Witaj. \ NWitamy." w wywołaniu API zapisuję dane wyjściowe w mojej aplikacji, wyświetla się jako "Cześć tam. \ nWita", z \ n nietkniętym (nie jest konwertowane na znak nowej linii). Jak uzyskać php do wstawienia faktycznego \ n nowej linii char do wyniku zwrotu? (Och! Czy to ma związek z tym, że wynikiem jest 'json_encode'-ed? Człowieku, to denerwujące! OK, jak naprawić * to * ??) Dzięki! – Olie

+1

@Olie - json_encode nie powinno mieć znaczenia. Sprawdź podwójnie, czy używasz podwójnych cudzysłowów. Kiedy \ n znajduje się wewnątrz pojedynczych cudzysłowów, będzie interpretowane dosłownie. – azoundria

0

Cóż, tak jak w każdym języku istnieje kilka sposobów, aby to zrobić.

Jak wspomnieli poprzedni respondenci, "<br/>" nie jest łamaniem linii w tradycyjnym znaczeniu, jest to przerywka linii HTML.Nie znam wbudowanej stałej PHP dla tego, ale zawsze możesz zdefiniować własną:

// Something like this, but call it whatever you like 
const HTML_LINEBREAK = "<br/>"; 

Jeśli wyprowadzania kilka linii (z tablicy ciągów na przykład), można użyć go w ten sposób:

// Output an array of strings 
$myStrings = Array('Line1','Line2','Line3'); 
echo implode(HTML_LINEBREAK,$myStrings); 

jednak ogólnie rzecz biorąc powiedziałbym uniknąć twarde kodowania HTML wewnątrz instrukcji PHP echo/print. Jeśli możesz zachować kod HTML poza kodem sprawia, że ​​na dłuższą metę jest znacznie bardziej elastyczny i łatwiejszy w utrzymaniu.

0

Niezbyt "elegancki" i trochę marnowany, ale jeśli naprawdę zależy ci na tym, jak wygląda kod, możesz stworzyć własną ozdobną flagę, a następnie zrobić str_replace.

Example:<br /> 
$myoutput = "After this sentence there is a line break.<b>.|..</b> Here is a new line.";<br /> 
$myoutput = str_replace(".|..","&lt;br />",$myoutput);<br /> 

lub

how about:<br /> 
$myoutput = "After this sentence there is a line break.<b>E(*)3</b> Here is a new line.";<br /> 
$myoutput = str_replace("E(*)3","&lt;br />",$myoutput);<br /> 

nazywam pierwszą metodę "middle finger style", a drugi "goatse styl".

-1

\ n nie działa dla mnie. \ n pojawia się w bodytekście wiadomości e-mail, którą wysyłałem. Tak to rozwiązałem.

str_pad (wejście $ 990); // tak, aby spacje wyskoczyły do ​​990 odciętych.

6

Mam zdefiniowane następująco:

if (PHP_SAPI === 'cli') 
{ 
    define("LNBR", PHP_EOL); 
} 
else 
{ 
    define("LNBR", "<BR/>"); 
} 

Po tym zastosowaniu LNBR gdziekolwiek chcesz użyć \n.

2

w liniach php możemy użyć PHP_EOL (END OF LINE). Działa jako "\ n" , ale nie może być pokazany na stronie ht ml. Ponieważ musimy dać przerwę HTML, aby przerwać linię.

więc można go używać za pomocą określić

define ("EOL","<br>"); 

następnie można nazwać

Powiązane problemy