Flor: Zeichen ¿ macht Probleme

Hallo Leute,
ich hoffe mir kann jemand einen Hinweis geben - ich habe ein Problem und komme nicht weiter..  )-:

Also auf meiner Weibseite gibt der User einen String in ein Input ein.
Mit Javascript (sorry - php hat der Webspace nicht) lese ich den String ein und zwecks weiterverarbeitung tausche ich einige Zeichen um.
Weitestgehend funktioniert das ... Aber: ich möchte auch
das "Falschrum-Fragezeichen" löschen können. Normalerweise mit dieser
Zeile: str = str.replace(/¿/," ");

Aber wenn ich die einfüge funktionier das ganze Script nicht mehr ?!

Also -falls das von Bedeutung ist: Ich habe als oberste Zeile des Dokuments das hier stehen <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">.

Ich hoffe ich habe mein Problem so dargestellt, dass Ihr mich versteht und hoffe auf eine Antwort.

Viele Gruesse
Florencia

Hier nochmal die ganze funktion. Die Zeile die nicht funktioniert ist auskommentier.

function clst(str)  {
for (n=0; n<str.length; n++)
{
str = str.replace(/,/,"");
str = str.replace(/  /," ");
str = str.replace(/¿/," ");
//str = str.replace(/?/," ");
str = str.replace(/á/,"&aacute;");
str = str.replace(/é/,"&eacute;");

}
str=str.toLowerCase();
return str;
}

  1. Ich kenne mich zwar mit JavaScript net so toll aus, aber versuch es mal hiermit: %C2%BF statt mit ¿

  2. Hallo,

    Zeile: str = str.replace(/¿/," ");
    Aber wenn ich die einfüge funktionier das ganze Script nicht mehr ?!

    Doch.

    Hier nochmal die ganze funktion. Die Zeile die nicht funktioniert ist auskommentier.

    Ja, und das ist die mit dem richtigrumen ;-) Fragezeichen

    function clst(str)  {
    for (n=0; n<str.length; n++)
    {
    str = str.replace(/,/,"");
    str = str.replace(/  /," ");
    str = str.replace(/¿/," ");
    //str = str.replace(/?/," ");
    str = str.replace(/á/,"&aacute;");
    str = str.replace(/é/,"&eacute;");

    }
    str=str.toLowerCase();
    return str;
    }

    Dieses Fragezeichen hat innerhalb eines regulären Ausdrucks eine Spezialbedeutung http://de.selfhtml.org/perl/sprache/regexpr.htm#maskierung. Wenn Du das Zeichen "?" meinst, musst Du es deshalb maskieren.

    viele Grüße

    Axel

  3. Hallo Flor.

    Zeile: str = str.replace(/¿/," ");

    Anmerkung: das erste Argument der replace-Methode muss kein regulärer Ausdruck sein, eine einfache Zeichenkette genügt.

    Einen schönen Dienstag noch.

    Gruß, Ashura

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
    [HTML Design Constraints: Logical Markup]
    1. Hallo,

      Zeile: str = str.replace(/¿/," ");
      Anmerkung: das erste Argument der replace-Methode muss kein regulärer Ausdruck sein, eine einfache Zeichenkette genügt.

      Tatsächlich. Schön, dass man immer wieder was dazulernt.

      viele Grüße

      Axel

      1. Hallo,

        Danke für eure Hilfe.

        Sorry fürs AufDerLeitungStehen. Aber ich konnte meine Javascript
        noch nicht zum laufen bringen...

        Wie genau schreib ich das denn? einer meiner Versuche sieht z.B. so aus:

        str = str.replace(/(?)/," ");

        1. hi,

          Sorry fürs AufDerLeitungStehen. Aber ich konnte meine Javascript
          noch nicht zum laufen bringen...

          Wie genau schreib ich das denn?

          Du hast doch jetzt schon gesagt bekommen, dass die replace-Methode gar nicht unbedingt einen regulären Ausdruck haben will, sondern sich auch mit einem einfachen String zufriedengeben würde (denn sie natürlich obendrein performanter ersetzen könnte).

          einer meiner Versuche sieht z.B. so aus:

          str = str.replace(/(?)/," ");

          Warum also nicht einfach
          str = str.replace("?"," ");

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
        2. Hallo,

          Sorry fürs AufDerLeitungStehen. Aber ich konnte meine Javascript
          noch nicht zum laufen bringen...

          Wie genau schreib ich das denn? einer meiner Versuche sieht z.B. so aus:
          str = str.replace(/(?)/," ");

          Das funktioniert nicht? Welche Fehlermeldung kommt? Die Klammern sind zwar nicht notwendig, dürften aber auch nicht stören.

          Hier mal ein Beispiel:

          <script type="text/javascript">

            
          function clst(str)  {  
           str = str.replace(/,/g,"");  
           str = str.replace(/¿/g," ");  
           str = str.replace(/\?/g," ");  
           str = str.replace(/á/gi,"&aacute;");  
           str = str.replace(/é/gi,"&eacute;");  
           while(str.search(/  /) != -1) {  
            str = str.replace(/  /g," ");  
           }  
           str=str.toLowerCase();  
           return str;  
          }  
          var myString="   HáLLo?  ¿, WÉlt? ¿,  HÁllO?¿,    Wélt?¿"  
            
          alert(clst(myString));  
          
          

          </script>

          viele Grüße

          Axel

          1. Hallo & Danke !!

            Also ich hatte vorher keine Fehlermeldung, aber das Fragezeichen ausgetauscht hat er auch nicht.

            Aber ich habe Deinen geposteten Code reinkopiert und das funktioniert!

            Vielen Dank für Deine / eure Hilfe

            Florencia

  4. Hallo,

    function clst(str)  {
    for (n=0; n<str.length; n++)
    {
    str = str.replace(/,/,"");
    str = str.replace(/  /," ");
    str = str.replace(/¿/," ");
    //str = str.replace(/?/," ");
    str = str.replace(/á/,"&aacute;");
    str = str.replace(/é/,"&eacute;");

    }
    str=str.toLowerCase();
    return str;
    }

    Das sehe ich jetzt erst: Wozu ist Die Schleife "for (n=0; n<str.length; n++)" da? Schau Dir mal die Bedeutung des Flags "/g" an http://de.selfhtml.org/perl/sprache/regexpr.htm#flags.

    Bsp.:
    str = str.replace(/é/g,"&eacute;");

    viele Grüße

    Axel

    1. Hallo Axel.

      str = str.replace(/é/g,"&eacute;");

      Öhm, die Flags für die replace-Methode gehören doch in das dritte Argument?
      (Hast du ja schließlich selbst verlinkt.)

      Einen schönen Dienstag noch.

      Gruß, Ashura

      --
      sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
      „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
      [HTML Design Constraints: Logical Markup]
      1. hi,

        str = str.replace(/é/g,"&eacute;");

        Öhm, die Flags für die replace-Methode gehören doch in das dritte Argument?

        "This parameter is only used if the first parameter is a string."

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
      2. Hallo Gunnar™.

        Öhm, die Flags für die replace-Methode gehören doch in das dritte Argument?

        Bei einem regulären Ausdruck aber nicht:

        This parameter is only used if the first parameter is a string.

        Das würde aber darauf hindeuten, dass eine einfache Zeichenkette als erstes Argument intern dennoch als regulärer Ausdruck verarbeitet wird, sonst gäbe es ja keine Möglichkeit, Flags zu verwenden.

        Einen schönen Dienstag noch.

        Gruß, Ashura

        --
        sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
        „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
        [HTML Design Constraints: Logical Markup]