Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[php] BB parser

Bill Gates
4 antwoorden
  • Ik ben bezig met een kleine bb parser voor m'n site, maar nu kom ik op een probleem :(

    Ik zoek de tekst tussen tags op, en die duw ik in een functie. Alleen het lukt me niet om die string te bewerken :S Dit is de code. [code:1:a8871d7c14]<? $smilie_find = array( '&gt;:)', ':)', '|:(', ":'(", ':P', ); $smilie_replace = array( '<img class="smilie" src="../pics/smilies/devil.gif">', '<img class="smilie" src="../pics/smilies/smile.gif">', '<img class="smilie" src="../pics/smilies/frusty.gif">', '<img class="smilie" src="../pics/smilies/cry.gif">', '<img class="smilie" src="../pics/smilies/puh2.gif">', ); function code($input, $numbers, $code) { global $smilie_find, $smilie_replace; //$input = trim(str_replace("<br />", "
    ", $input)); for($i=0; $i < count($smilie_find); $i++) { $input = str_replace($smilie_replace["$i"], $smilie_find["$i"], $input); //echo $smilie_replace["$i"] . " —- " . $smilie_find["$i"] . "<br>
    "; } if($code == 0) $output = $input; elseif($code == 1) { $input = str_replace("&lt;", "<", $input); $input = str_replace("&gt;", ">", $input); $input = str_replace("&quot;", '"', $input); $input = str_replace("&", "&", $input); $input = str_replace('\\"', '\"', $input); ob_start(); @highlight_string($input); $output = ob_get_contents(); ob_end_clean(); } $output = str_replace("]", "&#93", $output); $output = str_replace("[", "&#91", $output); return $output; } function bbcode($input) { global $smilie_find, $smilie_replace; $input = nl2br(htmlspecialchars(trim($input))); for($i=0; $i < count($smilie_find); $i++) $input = str_replace($smilie_find["$i"], $smilie_replace["$i"], $input); $input = eregi_replace('\[code\](.*)\[/code\]', code('\\1', 1, 1), $input); $input = eregi_replace('\[php\](.*)\[/php\]', code("\\1", 1, 1), $input); $input = eregi_replace('\[no\](.*)\[/no\]', code("\\1", 0, 0), $input); $input = preg_replace('!\[b\](.+)\[/b\]!', "<b>\\1</b>", $input); $input = preg_replace('!\[u\](.+)\[/u\]!', "<u>\\1</u>", $input); $input = preg_replace('!\[i\](.+)\[/i\]!', "<i>\\1</i>", $input); $input = preg_replace('!\[s\](.+)\[/s\]!', "<s>\\1</s>", $input); $input = preg_replace('!\[li\](.+)\[/li\]!', "<li>\\1</li>", $input); $input = preg_replace('!\[quote\](.+)\[/quote\]!', "<blockquote>Quote:<hr>\\1</hr></blockquote>", $input); $input = preg_replace('!\[quote=(.+)\](.+)\[/quote\]!', "<blockquote>Quote van \\1<hr>\\2</blockquote>", $input); $input = preg_replace('!\[url\](.+)\[/url\]!', "<a href=\"\\1\">\\1</a>", $input); $input = preg_replace('!\[url=(.+)\](.+)\[/url\]!', "<a href=\"\\1\">\\2</a>", $input); $input = preg_replace('!\[img=(.+)\](.+)\]!', "<img src=\"\\1\">", $input); return $input; } echo bbcode($_POST["bericht"]); ?> <form name="form1" method="post" action=""> <p> <textarea name="bericht" cols="80" rows="8" id="bericht"><? echo htmlspecialchars($_POST[bericht]); ?></textarea> </p> <p> <input type="submit" name="Submit" value="Submit"> </p> </form>[/code:1:a8871d7c14]
  • [code:1:ec8127b42d]$input = eregi_replace('\[code\](.*)\[/code\]', code('\\1', 1, 1), $input);
    $input = eregi_replace('\[php\](.*)\[/php\]', code("\\1", 1, 1), $input);
    $input = eregi_replace('\[no\](.*)\[/no\]', code("\\1", 0, 0), $input);[/code:1:ec8127b42d]
    Met eregi_replace kun je alleen 'letterlijk' vervangen. Dus geen PHP code als vervanging instellen.

    Met perl-regexps kan dat wel. Dan moet je wel:
    [code:1:ec8127b42d]$input = preg_replace('/\[code\](.*)\[/code\]/e', code('\\1', 1, 1), $input);[/code:1:ec8127b42d]
    Ik geef de /e 'modifiër' mee, omdat PHP weet dat hij het tweede gedeelte als PHP op moet vatten.
  • mja, ik vat het. maar ik krijg een vage error:

    Warning: Unknown modifier 'c' in c:\apache\htdocs\site\inc\minibb.parser.inc.php on line 170

    Warning: Unknown modifier 'c' in c:\apache\htdocs\site\inc\minibb.parser.inc.php on line 170

    2x die error bij je preg
  • Waarom gebruik je geen database?

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.