2 berichten aan het bekijken - 1 tot 2 (van in totaal 2)
  • Q:
    Bijdrager
    Faan

    van BBC-achtig naar HTML

    Voor een CMS-achtig ding voor onze fotoclub ben ik bezig met wat dingen makkelijker te maken voor de niet-HTML-kenners van onze club.
    De bedoeling is om in een textarea via een BBC-achtige code de opbouw te kunnen aangeven.

    Voorbeeld:

    In een input field hebben ze de naam van de map op de server meegegeven.
    Daaronder staat het textfield en mogen ze volgende tags gebruiken:
    [code:1:18e9bebd37][block], [/block], [br], [img=x][/code:1:18e9bebd37]

    De block dient om aan te duiden dat alle foto’s (img) in de block op 1 lijn moeten komen.
    De br dient om een grafische scheiding te kunnen maken.
    De img uiteraard om een foto aan te duiden. De x zou moeten de naam van de foto zijn, makkelijker zelfs gewoon een cijfer met de bedoeling dat alle foto’s van het type 1.jpg, 2.jpg moeten zijn.

    Voorbeeld van een gewenste opbouw:

    [block][/block]
    [br]
    [block][/block]
    [block][/block]
    [br]
    [block][/block]

    Hoe krijg ik dit nu deftig in html…?

    Ik dacht aan het volgende om alles behalve de img-tags om te zetten:
    [code:1:18e9bebd37]function bbc2html($message)
    {
    $message = str_replace ("[block]", "<div class="img_block">", "$message");
    $message = str_replace ("[/block]", "</div>", "$message");
    $message = str_replace ("[br]", "<div class="break">&nbsp;</div>", "$message");
    return $message;
    }[/code:1:18e9bebd37]

    En de images zouden dan in een array moeten want bij elke img moet een <a> en <img> worden gegenereerd.
    Ik dacht aan iets in deze aard:
    [code:1:18e9bebd37]bbc2img_array($message)
    {
    $message = str_replace ("[block]", "", "$message");
    $message = str_replace ("[/block]", "", "$message");
    $message = str_replace ("[br]", "", "$message");
    $images = str_replace ("]", "", "$message");
    $img_array = explode("[img=", $message);
    return $img_array;[/code:1:18e9bebd37]

    Dan zou ik met die array het volgende moeten doen:
    [code:1:18e9bebd37]foreach($img_array as $img) {
    echo("<a href="$map/{$img}.jpg"><img src="$map/tn_{$img}.jpg</a>");
    }[/code:1:18e9bebd37]

    Problemen:

    (1) hoe zorg ik dat die $map die nog niet werd opgeslaan in database, maar in het veld er net boven werd ingevuld wordt verwerkt wanneer de pagina uiteindelijk zal worden gegenereerd? Eventueel [map] gebruiken en bij het genereren in bbc2html() ook nog de [map] laten veranderen naar $map?

    (2) hoe zorg ik dat die img verwerking kan gebeuren binnenin de originele string, want als ik bbc2img_array() laat lopen, dan zal bbc2html() niets meer hebben om naar html om te zetten. Dan krijg ik normaal gezien enkel foto’s. Doe ik eerst html en dan img_array dan klopt de explode niet…

    Bijdrager
    Faan

    Opgelost gekregen… voor de nieuwsgierigen:

    [code:1:90fde335ab]function bbc2img($message,$map)
    {
    $string = $message;
    $pattern = "/[img=(w+)]/i";
    $replacement = "<a href="SPOTLIGHT/{$map}/\1.jpg"><img src="SPOTLIGHT/{$map}/tn_\1.jpg" class="float" alt="" /> </a>";
    $message = preg_replace($pattern, $replacement, $string);
    return $message;
    }

    function bbc2html($message)
    {
    $message = str_replace ("[block]", "<div class="img_block">", "$message");
    $message = str_replace ("[/block]", "</div>", "$message");
    $message = str_replace ("[br]", "<div class="break">&nbsp;</div>", "$message");
    return $message;
    }

    $pics = bbc2html($record[’pics’]);
    $pics = bbc2img($pics,$map);

    echo($pics);

    [/code:1:90fde335ab]

2 berichten aan het bekijken - 1 tot 2 (van in totaal 2)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.