str_replace & Include

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

  • str_replace & Include

    Nabend,
    Da wär ich nochmal mit nem anderem Problemchen,
    und zwar habe ich ein Script, dass einen Quake3 Server Status abfragt, dies ist auch alled kein Problem, das script ist übrigens GameQ.
    Dieses Script Liefert einzelne Befehle bzw Variabeln zurück, beispiel sv_hostname "IrgendeinName"
    da unteranderem auch irgendwelche anderen Variabeln mit gesendet werden, die ich jedoch nicht brauche ala uptime und andere dinge, möcht eich diese rausfiltern,

    da dacht ich mir ich versuchs mit str_replace, jedoch ohne erfolg, der mist steht immer noch da...

    Quellcode

    1. <?php
    2. $var1 = include('gameq/example.php');
    3. $var = str_replace("Uptime", " ",$var1);
    4. ?>


    Hätte diesbezüglich jemand eine Idee für mich?

    MFG
  • Quellcode

    1. unset($nicht_benoetigte_variable);

    Eine Zuweisung des inkludierten Inhalts an eine Variable ist Blödsinn. Die Datei wird eingelesen für den Interpreter und somit kann der eigentliche Inhalt keiner Variable zugewiesen werden, es sei denn mittels ob_get_contents etc. Wenn du so etwas wie

    Quellcode

    1. $var = include('var');
    machst und dann

    Quellcode

    1. print $var;
    erhälst du das integer Äquivalent des boolschen Ausdrucks true, also 1 (Sofern die Datei eingelesen werden konnte, ansonsten gibt es eh einen error).
    Wenn du einen Dateiinhalt haben möchtest, solltest du dir file_get_contents angucken. Du könntest dir den Inhalt holen, mit str_replace (wie du es schon tust) ersetzen und dann den restlichen Inhalt als Code mittels evalausführen, aber das wäre dann doch eher ein Umweg.
  • Wie rswhite schon geschrieben hat ist include keine Funktion sondern ein Sprachkonstrukt.

    Quellcode

    1. $var1 = include('gameq/example.php'); // fail
    2. include 'gameq/example.php'; // well done


    Mit include bindet der Interpreter den Inhalt der zu includierenden Datei einfach ein. Ganz banal kann man es sich wie ein copy+paste vorstellen.


    Wenn du also auf Variablen aus der Datei zugreifen möchtest brauchst du nix anderes zu tun als diese einfach zu benutzen ;)


    Beispiel:

    Datei A.php

    Quellcode

    1. $baem = "Hello world";

    Datei B.php

    Quellcode

    1. include "A.php"; $baem .= "!";

    Datei C.php

    Quellcode

    1. include "B.php"; echo $baem; // gibt "Hello world!" aus



    ps.
    wenn du über file_get_contents gehst/gehen möchtest, dann schau dir eval an.
  • gameq/example.php

    Quellcode

    1. <?php
    2. error_reporting(E_ALL);
    3. require_once 'GameQ.php';
    4. // Define your servers,
    5. // see list.php for all supported games and identifiers.
    6. $servers = array(
    7. 'server 1' => array('quake3', '78.46.59.14', 27980),
    8. );
    9. // Call the class, and add your servers.
    10. $gq = new GameQ();
    11. $gq->addServers($servers);
    12. // You can optionally specify some settings
    13. $gq->setOption('timeout', 900);
    14. // You can optionally specify some output filters,
    15. // these will be applied to the results obtained.
    16. $gq->setFilter('normalise');
    17. $gq->setFilter('sortplayers', 'gq_ping');
    18. // Send requests, and parse the data
    19. $results = $gq->requestData();
    20. // Some functions to print the results
    21. function print_results($results) {
    22. foreach ($results as $id => $data) {
    23. printf("<h2>%s</h2>\n", $id);
    24. print_table($data);
    25. }
    26. }
    27. function print_table($data) {
    28. $gqs = array('gq_online', 'gq_address', 'gq_port', 'gq_prot', 'gq_type');
    29. if (!$data['gq_online']) {
    30. printf("<p>The server did not respond within the specified time.</p>\n");
    31. return;
    32. }
    33. print("<table><thead><tr><td>Variable</td><td>Value</td></tr></thead><tbody>\n");
    34. foreach ($data as $key => $val) {
    35. if (is_array($val)) continue;
    36. $cls = empty($cls) ? ' class="uneven"' : '';
    37. if (substr($key, 0, 3) == 'gq_') {
    38. $kcls = (in_array($key, $gqs)) ? 'always' : 'normalise';
    39. $key = sprintf("<span class=\"key-%s\">%s</span>", $kcls, $key);
    40. }
    41. printf("<tr%s><td>%s</td><td>%s</td></tr>\n", $cls, $key, $val);
    42. }
    43. print("</tbody></table>\n");
    44. }
    45. ?>
    46. <?php
    47. print_results($results);
    48. ?>
    Alles anzeigen


    Diese Datei bringt Folgende Ausgabe im Browser.

    server 1
    Variable Value
    EnhancedMod 1.0.7
    P 22333333332133312333333332313332333333233333333211211121111-122
    balancedteams 1
    clients 0
    friendlyFire 0
    g_alliedmaxlives 0
    g_antilag 1
    g_axismaxlives 0
    g_balancedteams 1
    g_bluelimbotime 12000
    g_friendlyFire 0
    g_gametype 2
    g_heavyWeaponRestriction 100
    g_maxlives 0
    g_minGameClients 8
    g_needpass 0
    g_redlimbotime 15000
    g_voteFlags 0
    game jaymod
    gamename et
    gametype 2
    gq_address 78.46.59.14
    gq_dedicated
    gq_gametype 2
    gq_hostname ^3BEGINNERS XP SAVE - STOCK MAPS
    gq_mapname fueldump
    gq_maxplayers 64
    gq_mod jaymod
    gq_numplayers 62
    gq_online 1
    gq_password 0
    gq_port 27980
    gq_prot quake3
    gq_type quake3
    hostname ^3BEGINNERS XP SAVE - STOCK MAPS
    mapname fueldump
    maxlives 0
    mod_binary linux-release
    mod_url jaymod.clanfu.org
    mod_version 2.1.7
    needpass 0
    omnibot_enable 1
    omnibot_playing 0
    protocol 82
    punkbuster 1
    pure 1
    serverload 36
    sv_allowAnonymous 0
    sv_cpu Intel(R) Core(TM) i7 CPU
    sv_floodProtect 1
    sv_hostname ^3BEGINNERS XP SAVE - STOCK MAPS
    sv_maxPing 0
    sv_maxRate 45000
    sv_maxclients 64
    sv_minPing 0
    sv_minguidage 0
    sv_privateClients 0
    sv_punkbuster 1
    sv_uptime 02d09h16m
    timelimit 30
    version ET
    voteFlags 507903
    weaprestrict 100


    Diese ich natürlich nicht alle brauche, deswegen wollte ich einige per str_replace wegfiltern, aber leichter gesagt, als getan :(
  • Szabo schrieb:

    Die werden schon entfernt, dein Problem ist nur vermutlich, dass diese example.php zu erst die Ausgabe macht und du hinterher bestimmte Sachen in der Ausgabe entfernen willst - das geht natürlich nicht mehr. Du musst erst entfernen und dann die print_results Funktion ausführen.



    und wie stell ich dies ambesten an?
    hab nun dass print aus der example php genommen, str_replace("sv_cpu"," ",$results); gemacht und in der sidebar.php include ('gamew/example.php'); sowie print $results;
    das selbe mit unset versucht, jedoch kein erfolg:(
  • Habe es nun mit folgendem Code Probbiert:

    Quellcode

    1. <?php include ('gameq/example.php'); ?>
    2. <?php unset($results['sv_cpu']); ?>
    3. <?php print_results($['gq_address']); ?>

    dann:

    Quellcode

    1. <?php include ('gameq/example.php'); ?>
    2. <?php unset($data['sv_cpu']); ?>
    3. <?php print_results($['gq_address']); ?>




    Notice: Undefined variable: results oder data in C:\xampp\htdocs\koks\sidebar.php on line 25

    Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\koks\gameq\example.php on line 40
  • geht wie gesagt nur leider nicht:( die ausgabe liefert nach wie vor

    server 1
    Variable Value
    EnhancedMod 1.0.7
    P 23333313312333333121333212323333131333333122211221211-2-11212122
    balancedteams 1
    clients 0
    friendlyFire 0
    g_alliedmaxlives 0
    g_antilag 1
    g_axismaxlives 0
    g_balancedteams 1
    g_bluelimbotime 12000
    g_friendlyFire 0
    g_gametype 2
    g_heavyWeaponRestriction 100
    g_maxlives 0
    g_minGameClients 8
    g_needpass 0
    g_redlimbotime 15000
    g_voteFlags 0
    game jaymod
    gamename et
    gametype 2
    gq_address 78.46.59.14
    gq_dedicated
    gq_gametype 2
    gq_hostname ^3BEGINNERS XP SAVE - STOCK MAPS
    gq_mapname goldrush
    gq_maxplayers 64
    gq_mod jaymod
    gq_numplayers 62
    gq_online 1
    gq_password 0
    gq_port 27980
    gq_prot quake3
    gq_type quake3
    hostname ^3BEGINNERS XP SAVE - STOCK MAPS
    mapname goldrush
    maxlives 0
    mod_binary linux-release
    mod_url jaymod.clanfu.org
    mod_version 2.1.7
    needpass 0
    omnibot_enable 1
    omnibot_playing 0
    protocol 82
    punkbuster 1
    pure 1
    serverload 32
    sv_allowAnonymous 0
    sv_cpu Intel(R) Core(TM) i7 CPU
    sv_floodProtect 1
    sv_hostname ^3BEGINNERS XP SAVE - STOCK MAPS
    sv_maxPing 0
    sv_maxRate 45000
    sv_maxclients 64
    sv_minPing 0
    sv_minguidage 0
    sv_privateClients 0
    sv_punkbuster 1
    sv_uptime 05d09h44m
    timelimit 30
    version ET
    voteFlags 507903
    weaprestrict 100
  • sidebar.php

    Quellcode

    1. <table border="0" cellspacing="0" cellpadding="0" style="background-color:ffb665">
    2. <tr>
    3. <td style="background-image:url(images/sub1/sub_light_orange_top_middle.png);repeat">
    4. <img src="images/sub1/sub_light_orange_top_left_corner.png">
    5. </td>
    6. <td width="95%" style="background-image:url(images/sub1/sub_light_orange_top_middle.png);repeat">
    7. </td>
    8. <td style="background-image:url(images/sub1/sub_light_orange_top_middle.png);repeat">
    9. <img src="images/sub1/sub_light_orange_top_right_corner.png">
    10. </td>
    11. </tr>
    12. <tr>
    13. <td style="background-image:url(images/sub1/sub_light_orange_middle_left.png);background-repeat: repeat-y">
    14. </td>
    15. <td align="left" valign="top" style="font-family:Verdana">
    16. <font style="font-weight:bold;">Server:</font><br>
    17. <font size="-1">
    18. <?php
    19. include ('gameq/example.php');
    20. unset($results['sv_cpu']);
    21. print_results($results);
    22. ?>
    23. <br>
    24. <u>Shockvoice Server:</u> <? include ("include/shockvoice.php"); ?>
    25. <br />
    26. </font>
    27. <table>
    28. <tr><td><font size="-1"> 3ster</font></td><td><img src="images/w_et_icon.png"></td>
    29. <tr><td><font size="-1"> Aro</font></td><td><img src="images/w_et_icon.png"></td>
    30. <tr><td><font size="-1"> knolle</font></td><td><img src="images/w_et_icon.png"></td>
    31. <tr><td><font size="-1"> Hooligan</font></td><td><img src="images/w_et_icon.png"><img src="images/dod_s_icon.png"><img src="images/coh_icon.png"></td>
    32. <tr><td><font size="-1"> Beffo</font></td><td><img src="images/w_et_icon.png"></td>
    33. <tr><td><font size="-1"> k0ks-kEks</font></td><td><img src="images/w_et_icon.png"><img src="images/dod_s_icon.png"><img src="images/coh_icon.png"></td>
    34. <tr><td><font size="-1"> germanAngst</font></td><td><img src="images/w_et_icon.png"><img src="images/coh_icon.png"></td>
    35. <tr><td><font size="-1"> Haudi</font></td><td><img src="images/w_et_icon.png"></td>
    36. <tr><td><font size="-1"> Prototype</font></td><td><img src="images/w_et_icon.png"></td>
    37. <tr><td><font size="-1"> Welfe</font></td><td><img src="images/dod_s_icon.png"><img src="images/coh_icon.png"></td>
    38. </table>
    39. </td>
    40. <td style="background-image:url(images/sub1/sub_light_orange_middle_right.png);background-repeat: repeat-y">
    41. </td>
    42. </tr>
    43. <tr>
    44. <td width="32px" height="32px">
    45. <img src="images/sub1/sub_light_orange_bottom_left_corner.png">
    46. </td>
    47. <td width="32px" height="32px" style="background-image:url(images/sub1/sub_light_orange_bottom_middle.png);repeat">
    48. </td>
    49. <td width="32px" height="32px">
    50. <img src="images/sub1/sub_light_orange_bottom_right_corner.png">
    51. </td>
    52. </tr>
    53. </table>
    Alles anzeigen



    gameq/example.php

    Quellcode

    1. <?php
    2. error_reporting(E_ALL);
    3. require_once 'GameQ.php';
    4. // Define your servers,
    5. // see list.php for all supported games and identifiers.
    6. $servers = array(
    7. 'server 1' => array('quake3', '78.46.59.14', 27980),
    8. );
    9. // Call the class, and add your servers.
    10. $gq = new GameQ();
    11. $gq->addServers($servers);
    12. // You can optionally specify some settings
    13. $gq->setOption('timeout', 900);
    14. // You can optionally specify some output filters,
    15. // these will be applied to the results obtained.
    16. $gq->setFilter('normalise');
    17. $gq->setFilter('sortplayers', 'gq_ping');
    18. // Send requests, and parse the data
    19. $results = $gq->requestData();
    20. // Some functions to print the results
    21. function print_results($results) {
    22. foreach ($results as $id => $data) {
    23. printf("<h2>%s</h2>\n", $id);
    24. print_table($data);
    25. }
    26. }
    27. function print_table($data) {
    28. $gqs = array('gq_online', 'gq_address', 'gq_port', 'gq_prot', 'gq_type');
    29. if (!$data['gq_online']) {
    30. printf("<p>The server did not respond within the specified time.</p>\n");
    31. return;
    32. }
    33. print("<table><thead><tr><td>Variable</td><td>Value</td></tr></thead><tbody>\n");
    34. foreach ($data as $key => $val) {
    35. if (is_array($val)) continue;
    36. $cls = empty($cls) ? ' class="uneven"' : '';
    37. if (substr($key, 0, 3) == 'gq_') {
    38. $kcls = (in_array($key, $gqs)) ? 'always' : 'normalise';
    39. $key = sprintf("<span class=\"key-%s\">%s</span>", $kcls, $key);
    40. }
    41. printf("<tr%s><td>%s</td><td>%s</td></tr>\n", $cls, $key, $val);
    42. }
    43. print("</tbody></table>\n");
    44. }
    45. ?>
    Alles anzeigen