[PHP5] Variable aus String herausziehen

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

  • [PHP5] Variable aus String herausziehen

    Hallo Leute!

    Ich beschäftige mich seit einiger Zeit mit einem kleinen Problem....
    Es geht um eine BBCode-Funktion.

    Meine Frage:
    Wie erhalte ich eine Variable aus einem String?

    Beispiel:

    Ich hab den String [pic=BILDID].
    Nun möchte ich aus diesem String die BILDID rausfischen.

    Ich habe gerade echt kein blassen schimmer.
    Es wäre nett, wenn mir jemand etwas auf die Sprünge helfen könnte.
    Vielen Dank schon mal im Voraus!

    Viele Grüße,
    Flo

  • #2
    Stichwort: Reguläre Ausdrücke

    Kommentar


    • #3
      http://de.php.net/manual/de/ref.strings.php ist schneller (substr etc). Die Manual lesen kannst du auch selber oder? (Um gegen Kommentare vorzubeugen - natürlich nur wenn du klar definierte Teile hast wie [pic=XXXX] - für BBCode oder ähnliches ist Regex natürlich besser.)
      Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

      Kommentar


      • #4
        Ich hab mein Script etwas umgeändert.
        Die User sollen jetzt noch die Möglichkeit haben, die Position des Bildes zu bestimmen. Sprich das Bild wird entweder zentriert, links, oder rechts angezeigt.
        Dafür benutze ich den BBCode [pic=Position]Bildid[/pic].

        Hier die Funktion.

        PHP-Code:
        function bbcodeimg($string) {
        $string htmlspecialchars("$string"ENT_QUOTES);
        $string trim($string);
        $string str_replace("\r\n""<br />"$string);

        //$string2 ist die Bildid
        $string2 preg_replace"/\[pic=\s*(.*?)\](.*?)\[\/pic\]/is""$2"$string);


        if(
        $string2!="") {
        //Aus dem Bildid-String werden die Leerzeichen entfernt
        $new_bildid str_replace(" """$string2);

        //Es wird überprüft ob diese Bildid in der Datenbank vorhanden ist.
        $query "SELECT * FROM pics WHERE time='$new_bildid'";
        $result mysql_query($query);
        $num mysql_num_rows($result);

        //Falls dies zutrifft, wird der img-Tag eingefügt ansonsten erscheint eine Fehlermeldung.
        if($num2==1) {
        $string str_replace("$new_bildid"
        '<img src="../../../images/userpics/'.$bilder_id.'_full.jpg">'
        $string2);
        } else {
        $string str_replace("$new_bildid"'error'$string2);
        }
        }

        return 
        $string;

        Das ganze klappt schon ganz gut nur hab ich jetzt ein Problem.
        Wenn ich einen Bild-BBCode einfüge, funktioniert das Ganze.
        Schreibe ich jedoch Text hinzu oder füge ein weiteres Bild ein, so wird nur die Bildid ausgeliefert aber nicht das img-Tag.
        Zum Beispiel wird aus "[pic=right]1174562504[/pic]
        hallooooo!" einfach "1174562504 hallooooo!".
        Zwar wurde die Bildid rausgefischt aber nicht in den img-Tag umgewandelt.
        Wo liegt das Problem und kann mir vlt. jemand helfen?
        Wäre super super nett!

        Gruß, Flo;
        Zuletzt geändert von floriankf; 02.04.2007, 23:49.

        Kommentar


        • #5
          brich den code um.

          kommst du denn in die abfrage if($string2!="") rein?

          Kommentar


          • #6
            ja ich komme in die abfrage.
            falls der bildercode vorhanden ist, wird erstmal überprüft ob der auch in der datenbank registriert ist.
            sollte dies der fall sein wird das bild ausgegeben.
            das wird auch gemacht.
            nur wenn ich zu [pic=position]bildid[/pic] irgendeinen text dahinter schreibe, wird die bildid und der text ausgegeben, aber nicht das bild.....

            Hier zwei Beispiele:

            1. Link:
            Hier hab ich nur einen Bildercode eingefügt.
            http://meeting.internetpalace.de/acc...o.php?pageid=2

            2. Link:
            Hier habe ich denselben Bildercode eingefügt und zusätzlich "hallo". *g*
            http://meeting.internetpalace.de/acc....php?pageid=18

            Wie ihr sehen könnt wird beim 1. Link der bildercode übersetzt und das richtige Bild ausgegeben. Beim 2. Link jedoch wird die bilderid ausgegeben.
            Langsam aber sicher liegen meine nerven blank.


            Gruß, Flo

            Kommentar


            • #7
              dann lass dir doch mal im zweiten fall die query ausgeben, wie sie an die db geht (und zeig sie am besten noch mal hier).

              Kommentar


              • #8
                die bildid geht an den server so wie sie rausgefischt wurde.

                hier der code:

                PHP-Code:
                <?php
                include("../../../config.php");
                include(
                "../../../inc/db.php");

                $user $_SESSION['uid'];
                $pageid $_GET['pageid'];

                db_connect();

                $query "SELECT * FROM mottoseiten WHERE id='$pageid'";
                $result mysql_query($query);
                $num mysql_num_rows($result);
                $row mysql_fetch_array($result);

                if(
                $num!=0) {

                $inhalt $row['inhalt'];

                function 
                bbcodeimg($string) {
                $string htmlspecialchars("$string"ENT_QUOTES);
                $string str_replace("\r\n""<br />"$string);
                $string2 preg_replace"/\[pic=\s*(.*?)\](.*?)\[\/pic\]/is""$2"$string);


                if(
                $string2!="") {
                $new_id str_replace(" """$string2);
                echo 
                'Das ist die Bildid: <b>'.$new_id.'</b>';
                $query2 "SELECT * FROM pics WHERE time='$new_id'";
                $result2 mysql_query($query2);
                $num2 mysql_num_rows($result2);
                $row2 mysql_fetch_array($result2);
                $bilder_id $row2['time'];

                if(
                $num2==1) {
                $string str_replace("$new_id"
                '<img src="../../../images/userpics/'.$bilder_id.'_full.jpg" />'
                $string2);
                } else {
                $string str_replace("$new_id"'error'$string2);
                }
                }

                return 
                $string;
                }

                $text bbcodeimg($inhalt);

                echo 
                $text;

                } else {
                echo 
                'Die Seite konnte nicht gefunden werden.';
                }
                ?>
                mit diesem code bekomme ich folgendes ergebnis:
                http://meeting.internetpalace.de/acc....php?pageid=18

                irgendwo ist da der wurm drinne o.O

                Kommentar


                • #9
                  machst du es bitte trotzdem?

                  Kommentar


                  • #10
                    das ist die bildid, so wie sie an die datenbank gesendet wird:

                    http://meeting.internetpalace.de/acc....php?pageid=18

                    Kommentar


                    • #11
                      Original geschrieben von penizillin
                      dann lass dir doch mal im zweiten fall die query ausgeben, wie sie an die db geht (und zeig sie am besten noch mal hier).

                      Kommentar


                      • #12
                        sorry!

                        versteh net so ganz was du meinst :-/

                        Kommentar


                        • #13
                          zeige die (fertig zusammengesetzte) sql anfrage.

                          Kommentar


                          • #14
                            ich werd mich jetzt nicht mehr weiter mit dem thema beschäftigen...
                            habs jetzt anders gelöst ;-)

                            Danke an Alle die zum Thema beigetragen haben!

                            Gruß, Flo

                            Kommentar

                            Lädt...
                            X