webForumDet fria alternativet

Bryta en rad i en textfil.

PHPur PHP

9 svar · 259 visningar · startad av MoneyOpps.nu

MoneyOpps.nuMedlem sedan maj 2002106 inlägg
#1

Om jag läser in en rad som ser ut som nedan

text1|text2|text3

Om jag läser in det i en array, så blir ju exempelvis $lista[1] = text1|text2|text3

Kan man på något sätt dela på denna rad, så att det blir $list[1] = text1, $lista[2] = text2, osv.... ???

Den ska alltså räkna "|" som en ny rad, och den ska Inte med i värdet på $lista[1].....

Hur gör man detta ??

Textfilen har en hel del rader, så då kanske det blir fel neråt sen.... Hjälp tack !

MatteMedlem sedan aug. 20002 975 inlägg
#2
<?php
$text = "text1|text2|text3";
$lista = explode("|", $text);
echo $lista[0]."<br>";
echo $lista[1]."<br>";
echo $lista[2];
?>
SPiNMedlem sedan mars 20007 896 inlägg
#3

Missade Matte raden om att det fanns flera rader? ;)
Nåja, det var en fin lösning som man bygger vidare på. :)

<?php

$fileList = file( "dinFil.txt" );

while( $curRow = array_shift( $fileArray ) ) {
     $curList = explode( "|", $curRow );
     array_push( $resultList, $curList );
}

?>

Jag tror att array_push() kan skjuta till en array ( I det här fallet $curList ) längst bak i $resultList, annars får man trixa lite till:

...
while( $curRow = array_shift( $fileArray ) ) {
     $curList = explode( "|", $curRow );
     
     while( $curValue = array_shift( $curList ) )
          array_push( $resultList, $curValue );
}
...

:)

MoneyOpps.nuMedlem sedan maj 2002106 inlägg
#4

Ok.
Om jag vill läsa in en rad ur arrayen och sen köra en explode på den och lägga in text1, text2 och text3 i en ny array. Hur ska jag göra då ?

Är rädd för att ni snackar med en nybörjare ;)

SPiNMedlem sedan mars 20007 896 inlägg
#5

Som Matte visade i sitt exempel. Mitt exempel skapade en array av alla rader i filen.

<?php

$fileList = file( "dinFil.txt" );
$rowList = explode( "|", $fileList[ 0 ] );

while( $curRow = array_shift( $rowList ) )
     array_push( $resultList, $curRow );

...
?>

Om du inte vill läsa in första raden ur filen, utan t.ex. femte, ändrar du bara $fileList[ 0 ] till $fileList[ 5 ].

MatteMedlem sedan aug. 20002 975 inlägg
#6

Spin. Vad är finessen med allt det där. Varför inte göra det lite enklare:

<?php

$fileList = file( "dinFil.txt" );
$resultList = explode( "|", $fileList[ 0 ] );

?>
MoneyOpps.nuMedlem sedan maj 2002106 inlägg
#7

Om jag har fattat det rätt så är det bara att läsa in alla rader i en array och sen köra

$nyarray = explode( "|", $fileList[ önskad_rad ] );

Då hamnar önskad_rad i arrayen $nyarray !?
Rätt ?

MatteMedlem sedan aug. 20002 975 inlägg
#8

Ja, så brukar jag göra.
Läser man in från en textfil så kan det bli lite radslutsmärken och skräp i slutet av strängen. Det gör inget om man ska skriva ut, men om du har sista delen av strängen (sista post i nya arrayen) till att jämföra med något så kan det bli lite knas. För säkerhets skull gör isåfall såhär:

$nyarray = explode( "|", rtrim($fileList[ önskad_rad ]) );

Om du loopar igenom $fileList så kan du samla arrayerna i en array med:

$nyarray[] = explode( "|", rtrim($fileList[ önskad_rad ]) );

Då får du en tvådimensionell array, och kan lätt ta fram dina värden med typ

echo $nyarray[1][3];
MoneyOpps.nuMedlem sedan maj 2002106 inlägg
#9

Ok.... då tror jag att jag vet hur jag ska göra, tackar.
Ska testa ikväll.

SPiNMedlem sedan mars 20007 896 inlägg
#10

Spin. Vad är finessen med allt det där.

:o
Det kan man ju fråga sig. Jag måste ha varit trött, eller så var det min dumhet som tog överhanden. ;)

140 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)