You are not logged in.

  • Login

1

Tuesday, July 7th 2009, 11:38am

Auslesen von bestimmten Wörtern innerhalb eines PHP-Scripts

Hallo :)
hab mich hier mal angemeldet und hoffe das ihr mir helfen könnt.
Ich kenne mich noch nicht so gut mit php scripts aus, also bitte nicht Fachwörter verwenden.

Also mein anliegen ist, dass ich eine Shoutcast Server habe aus dem ein Script "Current Song" und "Stream Title" ausliest und in meine Homepage einbaut.
Nun wollte ich fragen ob es möglich wäre bestimmte Wörter aus dem "Stream Title" auszulesen, wie z.B. wenn dort das Wort "DJ" vorhanden ist oder "Playlist".
Dazu soll dann ein bestimmtes Bild auf der Homepage gezeigt werden. Bei "DJ" z.B. On Air und bei "Playlist" Playlist On Air.
Das Problem ist, dass in dem Script selber keines der Wörter vorhanden ist, da "Stream Title" über '.$servertitle.' in die Seite eingefügt wird.
Ich hoffe ihr habt das soweit verstanden und könnt mir helfen...

Danke schonmal im Vorraus für eure Hilfe :)

2

Tuesday, July 7th 2009, 12:24pm

Das Problem ist, dass in dem Script selber keines der Wörter vorhanden ist, da "Stream Title" über '.$servertitle.' in die Seite eingefügt wird.

Das verstehe ich nicht. Aber wenn ich das im gesamten richtig interpretiere willt du sowas?!

PHP Quellcode

1
2
3
4
5
if(strpos($servertitle, 'DJ') === false {
	echo $servertitle;
} else {
	echo 'DJ on Air';
}

3

Wednesday, July 8th 2009, 2:38pm

Also es war so gedacht dass aus dem Servertitel bestimmte Wörter ausgelesen werden sollen.
Zum Beispiel wenn das Wort "DJ" in dem Servertitel vorhanden ist soll ein bestimmtes Bild gezeigt werden und das selbe auch bei dem Wort "Playlist".
Hoffe is so verständlicher :)

4

Wednesday, July 8th 2009, 2:55pm

Also es war so gedacht dass aus dem Servertitel bestimmte Wörter ausgelesen werden sollen.
Zum Beispiel wenn das Wort "DJ" in dem Servertitel vorhanden ist soll ein bestimmtes Bild gezeigt werden und das selbe auch bei dem Wort "Playlist".
Hoffe is so verständlicher :)


Hi,

der Lösungsansatz von X-Eon war schon vollkommen richtig.

Was hast du alles ausprobiert ?
Wo ist das Problem ?

http://de.php.net/strpos

5

Wednesday, July 8th 2009, 6:26pm

Also mit PHP kenne ich mich kaum aus...
Ich weiß das es da sowas gibt womit man bestimmte Buchstaben oder Wörter entfernen kann, aber das was ich möchte ist wie schon beschreiben
ein Hover über einem Bild ausgeben wenn ein bestimmtes Wort in dem Servertitel auftaucht.

Das Script von X-Eon versteh ich jetzt nicht so ganz. Also der ließt aus dem Servertitel das "DJ" aus, aber was soll dieses "false" danach?
Im Servertitel soll noch alles vorhanden sein also einfach nur "DJ" auslesen und dann ein Bild an einer bestimmten Stelle erzeugen.

So nochmal ganz genau :)
Ich hatte mir gedacht auf meiner Homepage an einer bestimmten Stelle z.B. links-oben ein Bild einzubauen. Das soll je nachdem ob gerade die Playlist oder ein DJ auf dem Shoutcast Server connected ist, Bild 1 sein oder Bild 2.
Bild 1=Playlist , Bild 2= DJ
Um das Bild zu ändern wollte ich aus dem Servertitel auslesen ob ein DJ drauf ist oder halt die Playlist.

Hoffe ist jetzt deutlich geworden :)

6

Wednesday, July 8th 2009, 7:05pm

Das der Codeausschnitt von XEON weder Backendabfrage noch Positionierung macht, sollte klar sein. Das ist nur ein Grundstein.
Abgesehen von deiner Liste was du alles haben willst, hast du aber ziemlich wenig erläutert, wo denn das eigentliche bei der Realisierung ist?

7

Thursday, July 9th 2009, 10:10am

Das Script von X-Eon macht nichts anderes als die Position (strpos) von 'DJ' in deiner Servertitle Variable zu suchen.
Wenn 'DJ' in deiner Variable nicht vorkommt, liefert strpos ein false zurück worauf in der Bedingung typsicher geprüft wird.

Das if-else Konstrukt macht dann nichts anderes als in Abhängigkeit des Ergebnisses einen Text anzuzeigen. Den Text kannst du dann durch ein Bild ersetzen und voila ...

:) Wenn du das ganze ausprobierst, wird es dir sicher klarer.

8

Thursday, July 9th 2009, 12:33pm

Ich hab dein Script mal ausprobiert :)
Aber um es zum Laufen zu bringen musste ich das bisschen verändern.

So hat es bei mir funktioniert:

PHP Quellcode

1
2
3
4
if(strpos($servertitle, 'DJ') === false)
echo $servertitle;
else 
echo 'DJ on Air';

Hab das jetzt mir so angepasst und es scheint auch zu funktionieren, aber hab gemerkt dass, das mit "stripos", aslo Groß- und Kleinschreibung, nur beim ersten geht also bei DJ...

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
if(stripos($servertitle, 'DJ') === false)
	;
 else 
	echo 'DJ on Air';
 
 
if(stripos($servertitle, 'Playlist') === false)
	;
 else 
	echo 'Playlist on Air';

9

Thursday, July 9th 2009, 12:59pm

Hi,

du musst auch nicht zwingend auf false prüfen.

PHP Quellcode

1
2
3
4
5
6
if(stripos($servertitle, 'DJ'))
	echo 'DJ on Air';
 
 
if(stripos($servertitle, 'Playlist') )
	echo 'Playlist on Air';



Wenn du mehr als 1 Zeile hast, dann vergiss die geschweiften Klammern aber nicht ;)

10

Thursday, July 9th 2009, 1:26pm

Hi,

du musst auch nicht zwingend auf false prüfen.

PHP Quellcode

1
2
3
4
5
6
if(stripos($servertitle, 'DJ'))
	echo 'DJ on Air';
 
 
if(stripos($servertitle, 'Playlist') )
	echo 'Playlist on Air';



Wenn du mehr als 1 Zeile hast, dann vergiss die geschweiften Klammern aber nicht ;)
Ja, aber dann ist es nicht mehr typsicher! Was bei der Funktion allerdings entscheidend ist, da sie einen integer Wert oder einen boolean false zurückgibt.
;)

11

Thursday, July 9th 2009, 2:16pm

Ja, aber dann ist es nicht mehr typsicher! Was bei der Funktion allerdings entscheidend ist, da sie einen integer Wert oder einen boolean false zurückgibt.


joa, so produziert man Bugs, wo man dann stundenlang auf Fehlersuche ist :wacko: :D


Aber man kann es ja noch negieren.

PHP Quellcode

1
2
3
4
5
6
if(stripos($servertitle, 'DJ') !== false)
	echo 'DJ on Air';
 
 
if(stripos($servertitle, 'Playlist')  !== false)
	echo 'Playlist on Air';

12

Thursday, July 9th 2009, 6:43pm

Wie würde das denn sein wenn ich anstatt "DJ on Air" und "Playlist on Air" Bilder verwenden würde?
Könnte mir jemand das so ändern das ein Bild an einer bestimmten Stellen auf meiner Seite ausgegeben wird.

13

Thursday, July 9th 2009, 7:02pm

Das geht mit HTML. HTML Grundlagen hast du doch bestimmt.

Optional auch mit CSS. Aber das ist u.U. gar nicht nötig.

14

Thursday, July 9th 2009, 8:48pm

Source code

1
2
3
4
5
if(stripos($servertitle, 'DJ') !== false)
	echo '<img src="dj.jpg" alt="DJ on Air" />';
 
 if(stripos($servertitle, 'Playlist')  !== false)
	echo '<img src="playlist.jpg" alt="Playlist on Air" />';


Das Script fügst du an der Stelle im Quellcode deiner Seite ein, wo das Bild erscheinen soll.

15

Friday, July 10th 2009, 1:16am

ok danke für eure hilfe
glaub jetzt komm ich alleine zurecht falls noch was ist melde ich mich nochmal sonst erstmal danke an alle :)

16

Saturday, October 24th 2009, 10:56pm

so da bin ich wieder ;)
hab jetzt den code in eine php-datei eingebaut um den servertitel abzufragen, aber hab das gefühl das da zu viel unnötige sachen mit drine sind und selbst überarbeiten ist irgendwie nix geworden
möchte ja nur den Servertitel

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
$scip = "fighter-of-the-world.ath.cx";
$scport = "7005";
$scpass = "musicforfun";
 
$scfp = fsockopen("$scip", $scport, &$errno, &$errstr,15);
if(!$scfp) {
$scsuccs=1;
echo'';
}
if($scsuccs!=1){
fputs($scfp,"GET /admin.cgi?pass=$scpass&mode=viewxml HTTP/1.0\r\nUser-Agent: SHOUTcast Song Status (Mozilla Compatible)\r\n\r\n");
while(!feof($scfp)) {
$page .= fgets($scfp, 1000);
}
 
$loop = array("STREAMSTATUS", "BITRATE", "SERVERTITLE", "CURRENTLISTENERS");
$y=0;
while($loop[$y]!=''){
$pageed = ereg_replace(".*<$loop[$y]>", "", $page);
$scphp = strtolower($loop[$y]);
$$scphp = ereg_replace("</$loop[$y]>.*", "", $pageed);
if($loop[$y]==SERVERGENRE || $loop[$y]==SERVERTITLE || $loop[$y]==SONGTITLE || $loop[$y]==SERVERTITLE)
$$scphp = urldecode($$scphp);
 
$y++;
}
 
fclose($scfp);
}
 
if(stripos($servertitle, 'DJ') === false)
;
else
echo 'DJ on Air';
 
 
if(stripos($servertitle, 'Playlist') === false)
;
else
echo 'Playlist on Air';

17

Sunday, October 25th 2009, 10:46am

gut, wenn der Code funktioniert.

Wenn du den Code sauberer halten willst, gebe ich dir drei Tipps für die Zukunft:
1) Nutzte Funktionen
z.B. könntest du den fsockopen Code in eine Funktion auslagern, so dass du nur noch folgendes Aufrufen müsstest
$page = getAdmin($scip, $scpass, $scport)

2) Nutze den XML Parser.
Anstatt dir mit regulären Ausdrücken die Daten zu holen, ist es einfacher $page als XML Objekt zu laden
$xml = simple_xml_load_string($page);

3) Vermeide es globale Variablen über $$ zu setzen. Das macht den Code schlecht nachvollziehbar => schlecht wartbar.

18

Sunday, October 25th 2009, 11:40am

ok werde mich wohl noch etwas mit php beschäftigen müssen um den sauber zu bekommen ;)
aber gut das er erstmal so funktioniert :)
aber hätte nochmal eine andere frage: wenn ich anstelle von "DJ on Air" oder "Playlist on Air" grafiken setze dann brauchen die immer bisschen um sich aufzubauen, aber wenn ich sie über <img> einbaue dann sind sie schnell geladen,
also liegt das anscheinend am php-code aber was kann man da machen das der die grafiken relativ schnell läd?

19

Sunday, October 25th 2009, 2:26pm

Einmal setzt du die Grafik also über den Shoutcast Server, und einmal über dein PHP Script?
Gibt es denn Unterschiede bei der HTML Ausgabe? Eigentlich kann es keinen Unterschied machen.

20

Wednesday, October 28th 2009, 4:26pm

also ich hole mir ja den servertitel von dem shoutcast server und jenachdem was für ein wort darin vorhanden is gibt er mir eine grafik aus.
hab aber irgendwie das gefühl das die grafiken zu langsam geladen werden das meinte ich ;) aber kann auch sein das es nur an meinem inet liegt ka

Social bookmarks