@-Vorkommen prüfen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • @-Vorkommen prüfen

    also, es geht darum, das in einem Text geprüft wird, ob noch eine Kombination von '@$username" vorhanden ist, also meinet wegen '@meinnick'. Dies ist für ein chat gedacht, aus einem '@meinnick' soll '[zu meinnick]' werden.

    Es soll ein Text ausgegeben werden, der zwischen einem @ und einem Leerzeichen steht.

    ich habe schon eine Umwandlung, jedoch weis ich nicht, wie ich das mit einer Schleife in verbinfung bringen soll.

    wäre das so richtig?

    PHP-Code:
    while($tpos strpos($text,"\@")) {...} 
    weil nämlich die bedingung irgendwie nie 'true' wird.

  • #2
    sieht gut aus - aber das \ vor dem @ ist überflüssig.
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      kein Titel

      ist zwar alles schön und gut, jedoch wird es einfach nie true.

      Jedes mal wenn die Schleife durchläuft, soll der eine Nachricjht ausgeben. Macht er nicht.

      auch wenn natürlich ein '@' vorkommt, macht der nix.

      Kommentar


      • #4
        Falls die while-Bedingung bereits zu Beginn FALSE ist, werden die Anweisungen der while-Schleife nicht ein einziges Mal durchlaufen.

        http://www.php.net/manual/de/control...ures.while.php

        Kommentar


        • #5
          da weis ich...

          nur warum Wird die Bedingung nie true?

          obwohl doch die Variable mindestens einmal gefüllt wird, weil ein @ Vorkommt, oder stimmt da was mit 'strpos()' nicht?

          Kommentar


          • #6
            Lass Dir mal die Variableninhalte anzeigen:
            Code:
            print "text:$text";
            if (strpos(($text,"@")) {
               print " --> im Text ist ein @ vorhanden";
            }
            print "<br>";
            
            while($tpos = strpos($text,"@")) {...}
            (Ich nehme an, Du veränderst den Inhalt der Variablen $text innerhalb der Schleife)
            Zuletzt geändert von hand; 17.03.2002, 17:36.

            Kommentar


            • #7
              wird nie true...

              also, auch der If-abfrage wird dat nie true!

              jedoch befindet sich ein '@' im String!

              tipp: versuche mal den tag [*php] ... [*/php]

              Kommentar


              • #8
                Versteh das nicht. Wird eregi() true?
                PHP-Code:
                echo "text:$text";
                if (
                eregi("@"$text)) {
                    echo 
                " --> im Text ist ein @ vorhanden";
                }
                print 
                "<br>"

                Kommentar


                • #9
                  joh!

                  ergi() gibt true aus.

                  kannste mir mal schnell sagen, wofür die Funktion ergi() gut ist?

                  und verstehen tu ich das jetzt erst recht nicht, warum strpos() nicht funzt.

                  Kommentar


                  • #10
                    eregi() ... sucht Übereinstimmung mit regulärem Ausdruck ohne Berücksichtigung von Groß-/Kleinschreibung
                    http://www.php.net/manual/de/function.eregi.php

                    ereg() ... sucht Übereinstimmungen mit einem regulären Ausdruck
                    http://www.php.net/manual/de/function.ereg.php

                    strpos() ... gibt Dir noch die Position an
                    http://www.php.net/manual/de/function.strpos.php

                    (Funzt strpos() mit einem anderen Zeichen? Oder das auch nicht)

                    Kommentar


                    • #11
                      aber warum zum teufel gibt strpos() nichts aus?

                      das verstehe ich nicht.

                      Ich brauche ja die Position des '@'s!

                      Kommentar


                      • #12
                        Folgendes Skript gibt bei mir als Resultat 5 aus. Bei Dir?
                        PHP-Code:
                        <?
                        $x = "hallo@gummi";
                        print strpos($x,"@");
                        ?>

                        Kommentar


                        • #13
                          nun hört die schleife bis zum Timeout nicht aus

                          hier ist mal die kommplette Schleife:

                          PHP-Code:
                          while($cpos strpos($text"@")){
                              
                              
                          writemsg("\@ Gefunden","alle",$chattext,$raum);
                              
                          $username_text substr($text$cpos 1strpos($text" "$cpos));
                              print 
                          $username_text;
                              
                              
                          $text str_replace("\@$username_text","",$text);
                              


                          so, ich denke mal, es liegt an der ermittlung der Variable '$username_text', kann da mal geguckt werden, ob die überhaupt richtig ermittelt wird?

                          Kommentar


                          • #14
                            aus http://www.php3.de/de/strpos:
                            Anmerkung: Die Meldungen "Zeichen bei Position 0 gefunden (character found at position 0)" und "Zeichen nicht gefunden (character not found)" werden oft falsch ausgelegt. Hier die Unterscheidung:
                            PHP-Code:
                            // in PHP 4.0b3 und danach:
                            $pos strpos ($mystring"b");
                            if (
                            $pos === false) { // Achtung: 3 Gleichheits-Zeichen
                                // nicht gefunden...
                            }

                            // in Versionen vor 4.0b3:
                            $pos strpos ($mystring"b");
                            if (
                            is_string ($pos) && !$pos) {
                                
                            // nicht gefunden...

                            mein Sport: mein Frühstück: meine Arbeit:

                            Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                            Kommentar


                            • #15
                              Re: nun hört die schleife bis zum Timeout nicht aus

                              Original geschrieben von hand
                              Folgendes Skript gibt bei mir als Resultat 5 aus. Bei Dir?
                              Hat sich das mit strpos() bei Dir nun geklärt? Was hattest Du falsch?

                              Original geschrieben von 20thcentury
                              ... kann da mal geguckt werden, ob die überhaupt richtig ermittelt wird?
                              Am ehesten, wenn Du den Inhalt von $text postest.

                              Kommentar

                              Lädt...
                              X