2017-12-17 3 views
0

Wie bekomme ich nur eine bestimmte Zeile von einer Variablen, die aus 10 oder mehr Zeilen besteht? Ich habe versucht, diesen Code:Erhalte eine bestimmte Zeile aus einer Variablen

$line = explode('/n', $lines); 

Aber jetzt arbeiten.

Das ist mein voller Code:

<?php 
$line = explode('\r\n', "i 
c"); 
echo $line[1]; 
?> 
+1

Das Newline ist entweder '\ r \ n 'oder' \ n', so etwas wie dies funktionieren soll: '$ line = explode ('\ r \ n', $ Zeilen); echo $ line [1]; ' – Cyclonecode

+0

@Cyclonecode ich habe es versucht, aber ich bekomme alle string in $ line [0] –

+1

Können Sie Ihre Daten zu Ihrer Frage hinzufügen? –

Antwort

0

Ich bin mir nicht sicher, warum explodiert nicht für Sie nicht (es soll). Ich schlage PHP_EOL als Trennzeichen vor und sehe, wie das dich packt. Aus Gründen des Vergleichs könnten Sie preg_match() verwenden, aber das wird langsamer sein.

Code: (Demo)

$string='line1 
line2 
line3 line 3 
line4 
line five 
line 6 
line 7 
line eight 
line 9 
line 10 
line eleven'; 

for($x=1; $x<10; $x+=2){ // $x is the targeted line number 
    echo "$x preg_match: "; 
    echo preg_match('/(?:^.*$\R?){'.($x-1).'}\K.*/m',$string,$out)?$out[0]:'fail'; 
    echo "\n explode: "; 
    echo explode(PHP_EOL,$string)[$x-1]; 
    echo "\n---\n"; 
} 

Ausgabe

1 preg_match: line1 
    explode: line1 
--- 
3 preg_match: line3 line 3 
    explode: line3 line 3 
--- 
5 preg_match: line five 
    explode: line five 
--- 
7 preg_match: line 7 
    explode: line 7 
--- 
9 preg_match: line 9 
    explode: line 9 
--- 

Je mehr ich darüber nachdenke, könnte Sie ein Problem erleben mit Ihrem zitieren. Einfache Anführungszeichen geben \n als zwei nicht-weiße Leerzeichen \ und n wieder. Sie müssen doppelte Anführungszeichen verwenden, damit es wie ein Zeilenvorschubzeichen behandelt wird.

Another demo:

echo 'PHP_EOL ',explode(PHP_EOL,$string)[0];  // PHP_EOL works 
echo "\n\n",'"\\n" ',explode("\n",$string)[0]; // "\n" works 
echo "\n\n","'\\n' ",explode('\n',$string)[0]; // '\n' doesn't work, the newline character is "literally" interpreted as "backslash n" 

Ausgang:

PHP_EOL line1  // This is correct 

"\n" line1  // This is correct 

'\n' line1  // The whole string is printed because there is no "backslash n" to explode on. 
line2 
line3 line 3 
line4 
line five 
line 6 
line 7 
line eight 
line 9 
line 10 
line eleven 
0

Wenn Sie durch die Linie zu spalten versuchen, dann sollten Sie verwenden:

$line = explode("\n", $lines); 

Als Beispiel:

<?php 

$lines = "first line 
second line 
third line 
fourth line"; 

$line = explode("\n", $lines); 

echo $line[3]; 

Dieser Wille geben Sie fourth line. Denken Sie daran, dass das erste Element in dem Array 0, zweiten 1, dritter ist 2 und so weiter ...

+0

Ja ... ich habe es versucht es, aber ich bekomme alle string in $ line [0] –

Verwandte Themen