PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [PHP] String ab Zeichen abschneiden


KiLLERHOLiC
2010-04-17, 21:01:31
Hallo,

bin absoluter PHP Neuling und möchte die Senderliste meines VDRs ausgeben.
Die Ausgabe funktioniert schon, eine nummerierung der Zeilen hab ich auch schon geschaft. Jetzt möchte ich aber den String ab einem ";" Zeichen abschneiden. Den Rest dahinter brauche ich nicht.
So sieht es jetzt aus:
1 Sky Action;Liwest:402000:C0M64:C:6900:767=2:768=deu;771=deu:38:B00:9:133:2:0
So soll es aussehen:
1 Sky Action

So sieht mein PHP Skript bis jetzt aus:
<?php
$lines = file('/etc/vdr/channels.conf');
foreach ($lines as $line_num => $line) {
$line_num++;
echo "{line_num} " . ($line) . "<br>\n";
}
?>

Vieleicht kann mir ja jemand einen passenden Tipp geben:rolleyes:

wry
2010-04-17, 21:56:36
Habs leider nicht getestet, aber sowas in der Art:


// Ab PHP 5.3.0
echo "{line_num} " . strstr($line, ';', true) . "<br>\n";


Quelle:
http://www.php.net/manual/de/function.strstr.php

Nagelbrett
2010-04-17, 23:02:34
Habs leider nicht getestet, aber sowas in der Art:


// Ab PHP 5.3.0
echo "{line_num} " . strstr($line, ';', true) . "<br>\n";


Quelle:
http://www.php.net/manual/de/function.strstr.php
EDIT: ok hab mich geirrt, geht wohl auch, sorry.

KiLLERHOLiC
2010-04-17, 23:32:22
Habs leider nicht getestet, aber sowas in der Art:


// Ab PHP 5.3.0
echo "{line_num} " . strstr($line, ';', true) . "<br>\n";


Quelle:
http://www.php.net/manual/de/function.strstr.php

So hab ich es schon probiert, funktioniert aber leider nicht.
true bzw. false werden nicht erkannt und es wird dann nur ein Fehler ausgegeben.

Edit:
Es liegt an der PHP Version das es so nicht funktioniert. Auf dem Server hab ich die aktuellen Ubuntu PHP Pakete installiert (5.2) und damit der Befehl funktioniert braucht man PHP 5.3.
Werd mich morgen wieder damit beschäftigen.

wry
2010-04-18, 00:21:15
So vielleicht?

echo "{line_num} " . substr($line, 0, strpos($line, ';')) . "<br>\n";


Kann sein, dass da noch ein +1 hinter strpos(..) dazu muss, oder ein -1.

KiLLERHOLiC
2010-04-18, 08:12:33
So vielleicht?

echo "{line_num} " . substr($line, 0, strpos($line, ';')) . "<br>\n";


Kann sein, dass da noch ein +1 hinter strpos(..) dazu muss, oder ein -1.

Dankesehr, so funktioniert es (mit der 0)! :smile:

BadCop
2011-11-18, 23:00:25
alternativ für alte Version einfach mal testen:

$lines = file('/etc/vdr/channels.conf');
preg_match_all('/([^;]+?);(.*)/', $lines, $matches);
echo implode("",$matches[1]);