Anzeige:
Ergebnis 1 bis 9 von 9

Thema: array in Tabelle auswerten, Problem mit leerzeichen

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #7
    Registrierter Benutzer
    Registriert seit
    27.06.2004
    Beiträge
    10
    Hallo

    Habe im moment wieder etwas Zeit und hab mich hier noch mal etwas mit der Sache beschäftigt.

    Mir ist am Anfang ein kleiner Fehler unterlaufen , und zwar baut sich das array etwas anders auf :
    $status_antwort_data
    Code:
    Array
    (
        [0] => 
        [1] => 
        [2] =>   0     0 CNCT BeZImiEnNy SZ. KL.1997150 88.220.xx.xx:12203  34362 10000
        [3] =>   1     2   62 p                134950 212.149.xx.xx:25641 18908  5000
        [4] =>   2     0  103 Essam                 0 196.218.xx.xx:10643  42223 30000
        [5] =>   3    22  999 Yahoo            118150 90.31.xx.xx:12203    24967 25000
        [6] =>   4     0  999 manix            582900 83.198.xx.xx:12203  29811 25000
        [7] =>   5    64   59 UnnamedSoldier       50 217.84.xx.xx:12203   15321 10000
        [8] =>   6     5   28 vector               50 213.93.xx.xx:-869   62834 25000
        [9] =>   7     8   50 yourself             50 86.140.xx.xx:12203     7091 25000
        [10] =>   8     2   46 BOOM-KILLER           0 83.93.xx.xx:12203     44537  5000
        [11] =>   9     8  220 Prazeres              0 87.103.xx.xx:12203    25197 20000
        [12] =>  11    38   69 Mike Waht hack u use    250 82.174.xx.xx:12203  23044  5000
        [13] =>  13     0   37 dulex$$.TRF           0 87.79.xx.xx:12203    44982 25000
        [14] =>  14     7   23 /*Anton aus Tirol*/      0 84.63.xx.xx:12203      14703 30000
        [15] =>  15     0  999 dA # louis         7500 77.216.xx.xx:12203   40562 25000
    )

    Ich habe jetzt etwas mit der foreach Schleife von undefined experementiert und habe das Problem das es zu Verschiebungen in der Tabelle kommt, da einige leerzeichen im array dafür sorgen das der falsche Wert für einen Key zurückgeliefert wird!
    Ich habe bereits versucht verschiedene Zeichfolgen zu filtern aber es kommt immer wieder ein neuer Client mit ausgefallenden Namen das die Ausgaben sich verschieben.

    Der Code sieht im moment wie folgt aus:
    PHP-Code:
    $array = array();
    foreach( 
    $status_antwort_data AS $k => $v ) {
      if ( 
    $status_antwort_data) {
        
    $v htmlentities$vENT_QUOTES"UTF-8" );
        
    $v str_replace"²",""$v ); // ² fals vorhanden aus namen entfernen


    //Zeichenvorkommen filtern die zu Problemen bei der Anzeige führen
    $vorkommen = array(") "" )""( ""( ""* "" *""- "" -""| "" |"". "" .""[ "" [""] "" ]");
    $v str_replace($vorkommen"³"$v);

        
    $v preg_replace('/\s\s+/'' '$v); //unnötige leerzeichen entfernen
        
    $v substr($v1);
        
    $v str_replace("CNCT","999",$v);
        
    $v str_replace("ZMBI","Disconnect",$v);
        
    $v str_replace" ","²"$v ); //neuen Trenner setzen
        
    $v preg_replace"/([a-z])(²)([a-z])/i""$1 $3"$v );

    $v str_replace("³"" "$v);

        
    $array[$k] = $v;
        }

    Der Code für die Tabelle:
    PHP-Code:
    //Spieleranzahl ermitteln
    $playercount count($array)-2;

    //Tabelle fuer die Ausgabe
    echo '<table border="1" align="center" width="780"><tr><td>';
    if (
    $status_antwort_data){
    echo 
    '<tr>';
    echo 
    '<th><u>num</u></th>';
    echo 
    '<th><u>score</u></th>';
    echo 
    '<th><u>ping</u></th>';
    echo 
    '<th><u>name</u></th>';
    echo 
    '<th><u>lastmsg</u></th>';
    echo 
    '<th><u>address</u></th>';
    echo 
    '<th><u>cport</u></th>';
    echo 
    '<th><u>qport</u></th>';
    echo 
    '<th><u>rate</u></th>';
    echo 
    '<th><u>Kick</u></th>';
    echo 
    '<th><u>Ban</u></th>';
    echo 
    '</tr>';
    $x 0
    while (
    $x <= $playercount) {
    $x++;
    $spielerinfo explode('²',$array[$x]);
    echo 
    "<tr>";
    echo 
    "<td align=center><font size=\"2\">$spielerinfo[0]</font></td>";
    echo 
    "<td align=center><font size=\"2\">$spielerinfo[1]</font></td>";

    if(
    $spielerinfo[2]  == 999) echo "<td align=\"center\"><font size=\"2\" color=red>$spielerinfo[2]</font></td>";
    elseif (
    $spielerinfo[2] > 100) echo "<td align=\"center\"><font size=\"2\" color=#F07C1D>$spielerinfo[2]</font></td>";
    elseif (
    $spielerinfo[2] < 100) echo "<td align=\"center\"><font size=\"2\" color=green>$spielerinfo[2]</font></td>";
    else echo 
    "<td align=\"center\"><font size=\"2\" color=red>$spielerinfo[2]</font></td>";

    echo 
    "<td align=center><font size=\"2\">$spielerinfo[3]</font></td>";
    echo 
    "<td align=center><font size=\"2\">$spielerinfo[4]</font></td>";
    $spielerip explode(":"$spielerinfo[5]);
    echo 
    "<td align=center><font size=\"2\">$spielerip[0]</font></td>";
    $spielerip[1] = str_replace"-",""$spielerip[1] );
    echo 
    "<td align=center><font size=\"2\">$spielerip[1]</font></td>";
    echo 
    "<td align=center><font size=\"2\">$spielerinfo[6]</font></td>";
    echo 
    "<td align=center><font size=\"2\">$spielerinfo[7]</font></td>";
    if(
    $spielerinfo[3]) {
    echo 
    "<td width=15>
            <FORM METHOD=Post ACTION=\"include.php?server=mohaaplayers\" NAME=\"kick_client\">
            <INPUT Type=hidden Name=\"kick\" VALUE=\"
    $spielerinfo[0]\">
            <INPUT Type=submit Name=\"kick_client\" VALUE=\"Kick\">
            <INPUT Type=\"hidden\" Name=\"rconpass\" VALUE=\"
    $_POST[rconpass]\">
            <INPUT Type=\"hidden\" Name=\"server_port\" VALUE=\"
    $_POST[server_port]\">
            <INPUT Type=\"hidden\" Name=\"server_ip\" VALUE=\"
    $_POST[server_ip]\">
            </FORM>"
    ;
    echo 
    "</td>";
    }

    if(
    $spielerinfo[3]) {
    echo 
    "<td width=15>
            <FORM METHOD=Post ACTION=\"include.php?server=mohaaplayers\" NAME=\"Ban\">
             <input type=hidden name=Ban value=
    $spielerip[0]>
            <INPUT Type=submit VALUE=\"Ban\">
            </FORM>"
    ;
    echo 
    "</td>";
    }

    echo 
    "</tr>";
        } 

    Was dabei raus kommt seht ihr im Screenshoot im Anhang.
    Client 0,11 und 15 sind solche Kadidaten!

    Wenn ich die Playerinformationen in ein eigenes array schreiben lasse , so wie von undefined vorgeschlagen mit "$array[$k] = explode( "²", $v );" statt "$array[$k] = $v;" dann sieht die Ausgabe für Client 15 so aus:
    Code:
        [17] => Array
            (
                [0] => 15
                [1] => 0
                [2] => 999
                [3] => dA
                [4] => #
                [5] => louis
                [6] => 7500
                [7] => 77.216.xx.xx:12203
                [8] => 40562
                [9] => 25000
            )
    Die brauche aber so eine ausgabe:
    Code:
        [17] => Array
            (
                [0] => 15
                [1] => 0
                [2] => 999
                [3] => dA # louis
                [4] => 7500
                [5] => 77.216.xx.xx:12203
                [6] => 40562
                [7] => 25000
            )
    Kann mir jemand noch einen Tip geben wie das array so filtere das ich die kompletten Playernamen mit leerzeichen und sonstigen in $spielerinfo[3] habe?

    Gruss Oli
    Geändert von zyrusthc (08-06-2007 um 00:40 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •