Auslesen von bestimmten Wörtern innerhalb eines PHP-Scripts

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 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 :)
  • TroneX schrieb:

    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?!

    Quellcode

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

    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 ?

    de.php.net/strpos
  • 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 :)
  • 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.
  • 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:

    Quellcode

    1. if(strpos($servertitle, 'DJ') === false)
    2. echo $servertitle;
    3. else
    4. 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...

    Quellcode

    1. if(stripos($servertitle, 'DJ') === false)
    2. ;
    3. else
    4. echo 'DJ on Air';
    5. if(stripos($servertitle, 'Playlist') === false)
    6. ;
    7. else
    8. echo 'Playlist on Air';
  • vince schrieb:

    Hi,

    du musst auch nicht zwingend auf false prüfen.

    Quellcode

    1. if(stripos($servertitle, 'DJ'))
    2. echo 'DJ on Air';
    3. if(stripos($servertitle, 'Playlist') )
    4. 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.
    ;)
  • X-Eon schrieb:

    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.

    Quellcode

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

    1. if(stripos($servertitle, 'DJ') !== false)
    2. echo '<img src="dj.jpg" alt="DJ on Air" />';
    3. if(stripos($servertitle, 'Playlist') !== false)
    4. 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.
    netzonaut.de - Ein Blog zu den Themen Internet, Webentwicklung, Linux und OpenSource-Software
    jexlab.net - Webentwicklung zu fairen Konditionen
  • 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

    Quellcode

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