kostenloser Webspace werbefrei: lima-city


bb code erweiterng

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    ohost

    ohost hat kostenlosen Webspace.

    Hey,
    wie schon gesagt es geht um bb code.
    Und zwar will ich jetzt nicht nur den standard sondern etwas, was aus der reihe tanzt.
    es geht um einen [imgthumb]-tag der thumbnails von bilder darstellt (soweit alles klar) und beim klick darauf soll das bild das in groß in einem popup geladen werden. der thumbnail und das bild im popup haben die gleiche url, das es nur ein "gefakter" thumb ist mit width-angabe.

    bin verzweifelt da all meine ideen nicht geklappt haben oder nur teilweise funktioniert haben
    Grüße Seba
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Nimm einen href tag, indem du das Bild mit dem width tag, wie du sagst (ich würde eher CSS benutzen), klein darstellst. Die Seite auf die du verweist ist eifach ebenfalls selbst geschrieben.
    An diese Seite gibst du eifnach noch per GET Variable die URL an. Deine Seite nimmt dann einfach die URL und zeigt das Bild in Originalgröße an.


    ~URL ist ein Platzhalter für die URl.. wie man sich denken kann,.,.^^

    der ,,Thumbnail":
    <a href="show.php?page=~URL" title="A thumbnail from a user picture!"><img sry="~URL" /></a>


    show.php

    <?php
    echo '<img src="' . $_GET['page'] . '";>';
    ?>




    Das Beispiel ist stark vereinfacht!
  4. Autor dieses Themas

    ohost

    ohost hat kostenlosen Webspace.

    Das hatte ich auch einigermaßen hingekriegt, mein problem war aber wenn ich str_replace() nehme hab kann ich die bild URL nur einmal verwenden: gelöst habe ichs so:
    srand(microtime()*1000000);
            $zufall = rand(1,1000000);
            $inhalt = str_replace("[imgthumb]", "<a href=\"#\" onclick=\"Fenster1 = window.open(image$zufall.src, 'Zweitfenster', 'width=700,height=640,left=100,top=100,menubar=no,status=no,toolbar=no');Fenster1.focus();\"><img name=\"image$zufall\" width=\"150\" src=\"", $inhalt);


    das ging dann auch noch, nach dem prinzip nicht schön aber selten.
    wenn ich jetzt aber noch attribute img img-tag hinzugefügt habe gabs probleme:
    srand(microtime()*1000000);
            $zufall = rand(1,1000000);
            $inhalt = str_replace("[imgthumb]", "<a href=\"#\" onclick=\"Fenster1 = window.open(image$zufall.src, 'Zweitfenster', 'width=700,height=640,left=100,top=100,menubar=no,status=no,toolbar=no');Fenster1.focus();\"><img name=\"image$zufall\" width=\"150\" src=\"", $inhalt);
            $inhalt = str_replace("[imgthumb=left]", "<a href=\"#\" onclick=\"Fenster1 = window.open(image$zufall.src, 'Zweitfenster', 'width=700,height=640,left=100,top=100,menubar=no,status=no,toolbar=no');Fenster1.focus();\"><img name=\"image$zufall\" style=\"float: left\" hspace=\"10\" und vspace=\"10\" width=\"150\" src=\"", $inhalt);
            $inhalt = str_replace("[imgthumb=right]", "<a href=\"#\" onclick=\"Fenster1 = window.open(image$zufall.src, 'Zweitfenster', 'width=700,height=640,left=100,top=100,menubar=no,status=no,toolbar=no');Fenster1.focus();\"><img name=\"image$zufall\" style=\"float: right\" hspace=\"10\" und vspace=\"10\" width=\"150\" src=\"", $inhalt);
            $inhalt = str_replace("[/imgthumb]", "\"></a>", $inhalt);

    dann war ich kreativ, und hab viel probiert - kein erfolg.
    Vll habt ihr noch nen paar ideen oder tips. Grüße

    Beitrag geaendert: 6.1.2007 19:45:28 von ohost
  5. Hi,

    ich würde es jedoch so machen (du solltest reguläre Ausdrücke [http://www.php.net/manual/de/reference.pcre.pattern.syntax.php] verwenden [preg_replace() usw. -> http://php.net/manual/de/function.preg-replace.php]):
    <?php
    $text = 'Text .. bla bla
    [imgthumb]http://www.test.com/dir/image.gif[/imgthumb]
    ... und mehr Text.';
    
    $text = preg_replace(
      '/\[imgthumb\](.*?)\[\/imgthumb\]/',
      '<a href="javascript:void()" onclick="window.open(\'$1\',\'grosses-Bild\',\'width=500,height=300,resizable=yes\')"><img src="$1" width="100" alt="$1" /></a>',
      $text);
    
    print $text;
    ?>


    Alles klar?
    Der Codehighlighter von Lima hat natürlich wieder alle Doppelten Anführungszeichen durch einfache erstezt, aber sonst sollte es funktionieren.
    Eigentlich könnte man den Regulären Ausdruck (.*?) auch durch einen ersetzten der die Gültigkeit der URI bestimmt, aber hier als beispiel nicht nötig

    mfg,
    hr

    Beitrag geaendert: 7.1.2007 7:27:34 von heavyraptor
  6. Autor dieses Themas

    ohost

    ohost hat kostenlosen Webspace.

    hmm danke erstmal, ich glaube ich steh auf dem schlauch...
    ich hab versucht das ganze anzuwenden, es kommt kein fehler (toll^^) aber passiert auch nichts (nicht so toll^^), d.h. der bb-code wird als bb-code ausgegeben.

    hier mein neuer code:
    $find = array(
                       "'\[b\](.*?)\[/b\]'is",
                       "'\[link\](.*?)\[/link\]'i",
                       "'\[link=(.*?)\](.*?)\[/link\]'i",
    		   "'\[imgthumb\](.*?)\[/imgthumb\]'i",
    		   "'\[imgthumb=left\](.*?)\[/imgthumb\]'i",
    		   "/\[imgthumb=right\](.*?)\[\/imgthumb\]/"
                    );
    
    $replace = array(
                       "<strong>\\1</strong>",
                       "<a href=\"\\1\">\\1</a>",
                       "<a href=\"\\1\">\\2</a>",
    		   "<a href=\"#\" onclick=\"Fenster1 = window.open(image$zufall.src, 'Zweitfenster', 'width=700,height=640,left=100,top=100,menubar=no,status=no,toolbar=no');Fenster1.focus();\"><img name=\"image$zufall\" width=\"150\" src=\"\\1\"></a>",
    		   "<a href=\"#\" onclick=\"Fenster1 = window.open(image$zufall.src, 'Zweitfenster', 'width=700,height=640,left=100,top=100,menubar=no,status=no,toolbar=no');Fenster1.focus();\"><img name=\"image$zufall\" style=\"float: left\" hspace=\"10\" und vspace=\"10\" width=\"150\" src=\"\\1\"></a>",
    		   "<a href=\"#\" onclick=\"Fenster1 = window.open(image$zufall.src, 'Zweitfenster', 'width=700,height=640,left=100,top=100,menubar=no,status=no,toolbar=no');Fenster1.focus();\"><img name=\"image$zufall\" style=\"float: right\" hspace=\"10\" und vspace=\"10\" width=\"150\" src=\"\\1\"></a>"
                    );
    
    preg_replace($find,$replace,$inhalt);

    lima hat auch bei mir doppelte anfürungsstrichen durch einfache ersetzt,

    also das ganze noch mal ohne [ code ]-tags, damit man den code auch kopieren kann:
    ok, lima ersetzt es immernoch also bin ich da machtlos :(

    Beitrag geaendert: 7.1.2007 17:07:17 von ohost
  7. Hi,

    hmm, vielleicht liegt das Problem daran, dass du die / am Anfang und am Schluss der regulären Ausdrücke vergessen hast und die regulären Zeichen wie [ und ] nicht "escaped" hast.
    Versuch mal folgendes:
    $find = array(
      '/\[b\](.*?)\[\/b\]/is',
      '/\[link\](.*?)\[\/link\]/i',
      '/\[link=(.*?)\](.*?)\[\/link\]/i',
      '/\[imgthumb\](.*?)\[\/imgthumb\]/i',
      '/\[imgthumb=left\](.*?)\[\/imgthumb\]/i',
      '/\[imgthumb=right\](.*?)\[\/imgthumb\]/'
    );


    Dies sollte eigentlich gehen, ich habs aber nicht ausprobiert.

    mfg,
    hr

    Beitrag geaendert: 7.1.2007 17:22:12 von heavyraptor
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!