Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: String mit "$" Zeichen

  1. #1
    Shrek
    Gast

    Standard String mit "$" Zeichen

    Hi,

    Ich habe auf meiner MySQL DB in der Tabelle players ein Feld NickName. Dort drin haben die meisten NickName's "$"-Zeichen im Namen wie z.B. : $070[GS]$w$00FShrek. Diese Zeichenketten (z.B. $070) stehen für Farben und Text Codes. Jetzt will ich diese NickNames mit PHP auslesen und dann ausgeben. Dies klappt auch wunderbar. Aber jetzt kommt dazu, dass ich diese NickNames in einer Funktion ausgebe, die diese Codes auch auswertet. Leider funktioniert dies nur teilweise, weil z.B. $F00 von PHP als Variable angesehen wird. Jetzt ist meine Frage, wie ich dies umgehen kann (z.B. $ in £ umwandeln). Mit str_replace("$", "£", $str) funktioniert dies nicht, also muss man da wahrscheinlich schon bei der MySQL-Abfrage was machen. Könnt ihr mir helfen wie ich das realisieren kann?
    Danke für eine Antwort.

    Gruss Shrek
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Interessierte/r
    Registriert seit
    13.05.2007
    Ort
    Sachsen
    Beiträge
    127
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Man müsste doch eigentlich $F00 auch escapen können. Etwa so: \$F00. Dann wird es nicht mehr als Variable sondern als String angesehen.
    Es gibt zwei Regeln fuer Erfolg im Leben:
    1. Erzaehle den Leuten nie alles, was Du weisst ...

  3. #3
    Shrek
    Gast

    Standard

    Und wie kann man das dann escapen? Habs auch schon versucht mit der str_replace() die $ in \$ umzuwandeln, aber ohne erfolg...
    Gibt es da irgendeine Funktion, die mir das machen kann?

  4. #4
    Interessierte/r
    Registriert seit
    13.05.2007
    Ort
    Sachsen
    Beiträge
    127
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Wir Verstehen uns wahrscheinlich noch nicht ganz. Ich erklär hier mal ausfürhlich, wie ich das meine.

    Um in einem String "$070[GS]$w$00FShrek" das "$070" gegen "xyz" zu tauschen wendet man folgenden Code an:
    Code:
    str_replace ("\$070,"xyz",$gegebener_String);
    Es gibt zwei Regeln fuer Erfolg im Leben:
    1. Erzaehle den Leuten nie alles, was Du weisst ...

  5. #5
    Kaiserliche Hoheit Avatar von No0ob
    Registriert seit
    02.01.2006
    Ort
    Nähe Frankfurt
    Beiträge
    1.500
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Ich würde auf addslashes() tippen

  6. #6
    Shrek
    Gast

    Standard

    Ach jetzt begreif ichs langsam
    Vielen Dank. Jetzt habe ich allerdings noch ne Frage:
    Da es von den codes ja von $000 bis $FFF alles gibt wäre es ja viel zu mühsam für jeden einzelnen einen str_replace() zu machen. Gibt es da irgendeinen "Platzhalter" oder ähnlich, der mir mit dem ich folgendes machen könnte:
    str_replace("\$[zahl 1][zahl 2][zahl 3]", "</SPAN><SPAN style='color:#[zahl 1][zahl 2][zahl 3]'>", $str)
    Oder wie könnte man das sonst noch lösen?
    Mein Ziel ist es ja aus z.B. $070[GS]$00FShrek [GS]Shrek zu machen.

    Mfg Shrek[/i]

  7. #7
    Interessierte/r
    Registriert seit
    13.05.2007
    Ort
    Sachsen
    Beiträge
    127
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Ich hab da nochmal etwas bei mir aus meinen alten Testscripts ausgekramt und habe es noch etwas angepasst. Das dürfte eigentlich die $'s bei dir ersetzen können.

    Code:
    function farbcodes_ersetzen&#40;$eingabe&#41;
    &#123;
      if&#40;strpos&#40;$eingabe,"\$"&#41; !== false&#41;
      &#123;
        $stelle = strpos&#40;$eingabe,"\$"&#41;;		//Stelle des allerersten $
        $ausgabe = substr&#40;$eingabe,0,$stelle&#41;;	//String, welcher vor dem allerersten $ steht
        $tmpstelle = 0;		//Stelle, von der aus das nächste $ gesucht werden soll
        $stelle = strpos&#40;$eingabe,"\$",$tmpstelle&#41;;		//Stelle des nächsten $
        $ende = false;
        while&#40;!$ende&#41;
        &#123;
          $ausgabe .= "<SPAN style='color&#58;#";		//Fügt das SPAN_Tag hinzu
          $ausgabe .= substr&#40;$eingabe,$stelle+1,3&#41;."'>";	//Fügt die 3 Farbwerte hinzu
          $tmpstelle = $stelle+1;	//Stelle, von der aus das nächste $ gesucht werden soll
          if&#40;strpos&#40;$eingabe,"\$",$tmpstelle&#41; !== false&#41;
          &#123; 
            $stelle = strpos&#40;$eingabe,"\$",$tmpstelle&#41;;
            $ausgabe .= substr&#40;$eingabe,$tmpstelle+3,$stelle-$tmpstelle-3&#41;;	//String zwischen den beiden $-Positionen
          &#125;
          else
          &#123;
            $ausgabe .= substr&#40;$eingabe,$tmpstelle+3&#41;;	//String von der letzten $-Position bis zum Ende
            $ende = true;
          &#125;
          $ausgabe .= "</SPAN>";
        &#125;
        return $ausgabe;
      &#125;
      else
        return $eingabe;
    &#125;
    Es gibt zwei Regeln fuer Erfolg im Leben:
    1. Erzaehle den Leuten nie alles, was Du weisst ...

  8. #8
    Shrek
    Gast

    Standard

    Danke vielmal Begreife dieses Script jetzt recht gut und es funktioniert eigentlich auch. Nur habe ich leider noch immer das Problem, dass alles als Variable interpretiert wird. Hier mal mein Code:

    Code:
    <?php
    function tmncolor&#40;$name&#41; &#123;
        // Die $$ temporär in ein &%& umwandeln um es später zu einem $ zu machen
        $nick = $name;
        // String mit Span Tags umschliessen
        $nick = "<SPAN>".$nick."</SPAN>";
        $nick = str_replace&#40;"\$\$", "&+&", $nick&#41;;
        //Verschiedene Zeichencodes ausschalten &#40;$s, $w, $n, $m, $i&#41;
        $nick = str_replace&#40;"\$s", "", $nick&#41;;
        $nick = str_replace&#40;"\$w", "", $nick&#41;;
        $nick = str_replace&#40;"\$n", "", $nick&#41;;
        $nick = str_replace&#40;"\$m", "", $nick&#41;;
        $nick = str_replace&#40;"\$i", "", $nick&#41;;
        //$g und $z machen wieder die Standarteinstellungen
        $nick = str_replace&#40;"\$g", "\$fff", $nick&#41;;
        $nick = str_replace&#40;"\$z", "\$fff", $nick&#41;;
        if&#40;strpos&#40;$nick,"\$"&#41; !== false&#41;
        &#123;
          $stelle = strpos&#40;$nick,"\$"&#41;;      //Stelle des allerersten $
          $ausgabe = substr&#40;$nick,0,$stelle&#41;;   //String, welcher vor dem allerersten $ steht
          $tmpstelle = 0;      //Stelle, von der aus das nächste $ gesucht werden soll
          $stelle = strpos&#40;$nick,"\$",$tmpstelle&#41;;      //Stelle des nächsten $
          $ende = false;
          while&#40;!$ende&#41;
          &#123;
            $ausgabe .= "<SPAN style='color&#58;#";      //Fügt das SPAN_Tag hinzu
            $ausgabe .= substr&#40;$nick,$stelle+1,3&#41;."'>";   //Fügt die 3 Farbwerte hinzu
            $tmpstelle = $stelle+1;   //Stelle, von der aus das nächste $ gesucht werden soll
            if&#40;strpos&#40;$nick,"\$",$tmpstelle&#41; !== false&#41;
            &#123;
              $stelle = strpos&#40;$nick,"\$",$tmpstelle&#41;;
              $ausgabe .= substr&#40;$nick,$tmpstelle+3,$stelle-$tmpstelle-3&#41;;   //String zwischen den beiden $-Positionen
            &#125;
            else
            &#123;
              $ausgabe .= substr&#40;$nick,$tmpstelle+3&#41;;   //String von der letzten $-Position bis zum Ende
              $ende = true;
            &#125;
            $ausgabe .= "</SPAN>";
          &#125;
          return $ausgabe;
        &#125;
        else
        &#123;
        return $nick;
        &#125;
    &#125;
    Ein Namen wie "$070[GS]$w$00FShrek" funktioniert perfekt, aber sobald es z.B. "$070[GS]$F00Shrek" ist wird das Shrek einfach abgeschnitten und es gibt [GS] alleine aus. Ich habe keine Ahnung warum das mit dem escapen irgendwie nicht funktioniert. Hat echt jemand eine Ahnung warum das so ist?

    Mfg Shrek

  9. #9
    Interessierte/r
    Registriert seit
    13.05.2007
    Ort
    Sachsen
    Beiträge
    127
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Also bei mir Funktioniert alles,
    echo tmncolor("\$070[GS]\$w\$00FShrek");
    echo tmncolor("$070[GS]$w$00FShrek");
    echo tmncolor("\$070[GS]\$00FShrek");
    echo tmncolor("$070[GS]$00FShrek");
    geben bei mir alle [GS]Shrek aus.
    Es gibt zwei Regeln fuer Erfolg im Leben:
    1. Erzaehle den Leuten nie alles, was Du weisst ...

  10. #10
    Shrek
    Gast

    Standard

    ja so geht es eben schon... aber wenn man tmncolor($070[GS]$F00Shrek) eingibt, wird Shrek einfach abgeschnitten, da $F00 als Variable interpretiert wird. Aber eigentlich sollte dies ja mit dem escapen gehen, aber scheinbar nicht. Sry ich bin ratlos.

Ähnliche Themen

  1. Kontrollieren, ob String "http://" enthält
    Von Unregistriert im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 2
    Letzter Beitrag: 12.08.2008, 21:34
  2. Vertikal Scrolling "YES" Horizontal "NO"
    Von Lighzz im Forum HTML & CSS Forum
    Antworten: 2
    Letzter Beitrag: 09.01.2007, 08:55
  3. php: "bitte warten" oder "login läuft"
    Von phore im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 3
    Letzter Beitrag: 05.04.2006, 18:18
  4. nach Zeichen kette mit "#" am Anfang suchen und e
    Von Peter im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 7
    Letzter Beitrag: 10.02.2006, 21:16
  5. Text immer "unten" und "rechts" am Frame
    Von Valdyn im Forum HTML & CSS Forum
    Antworten: 5
    Letzter Beitrag: 25.05.2004, 19:14

Stichworte

Berechtigungen

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