Hej udviklere,
Jeg har lige lavet denne klasse:
<?php
class format {
public $text;
public function text($text)
{
$this->text = $text;
$this->text = htmlspecialchars($this->text);
$this->text = htmlentities($this->text);
$linebreaks = array("\r\n", "\n\r", "\n", "\r");
$this->text = str_replace($linebreaks, "<br />", $this->text);
$this->text = eregi_replace("\[([a-z]+)]([^]]+)\[/([a-z]+)]", $this->bbcode("\\1","\\2","\\3"), $this->text);
return $this->text;
}
public function bbcode($starttag, $content, $endtag)
{
if (strcasecmp($starttag, $endtag) != 0)
{
return $content;
}
switch ($starttag)
{
case 'b':
return "<b>{$content}</b>";
case 'i':
return "<i>{$content}</i>";
case 'u':
return "<u>{$content}</u>";
case 'quote':
return "<blockquote>{$content}</blockquote>";
case 'code':
return "<div class=\"code\">" . highlight_string(html_entity_decode($content), true) . "</div>";
}
}
}
Når jeg så fx kører dette igennem:
[b]fed tekst[/b]
[i]kursiv tekst[/i]
[u]understreget tekst[/u]
Er det der kommer ud:
fed tekst
kursiv tekst
understreget tekst
Altså nøjagtig det samme, bare uden bbcode. Jeg har regnet ud, at funktionen bbcode simpelthen ikke gider acceptere den første if sætning. Hvis jeg fjerner den, returnerer funktionen heller ikke noget fra switch, selvom den burde.
Det skal lige siges, jeg er ret ny i det med klasser. Men hvad gør jeg galt? Jeg kan virkelig ikke se fejlen nogen steder.
Indlæg senest redigeret d. 17.06.2008 17:07 af Bruger #1011