PHP: bbCode output failar, varför?
Tjenare!
Sitter och testar lite olika grejer till en blogg, hittade en hyffsad bbCode funktion på php.net (ja jag vet att det finns bbCode moduler men men):
http://www.php.net/manual/en/function.bbcode-create.php#93349 <--- Den längst ner där
function bb_parse($string) {
$tags = 'b|i|size|color|center|quote|url|img';
while (preg_match_all('`\[('.$tags.')=?(.*?)\](.+?)\[/\1\]`', $string, $matches)) foreach ($matches[0] as $key => $match) {
list($tag, $param, $innertext) = array($matches[1][$key], $matches[2][$key], $matches[3][$key]);
switch ($tag) {
case 'b': $replacement = "<strong>$innertext</strong>"; break;
case 'i': $replacement = "<em>$innertext</em>"; break;
case 'size': $replacement = "<span style=\"font-size: $param;\">$innertext</span>"; break;
case 'color': $replacement = "<span style=\"color: $param;\">$innertext</span>"; break;
case 'center': $replacement = "<div class=\"centered\">$innertext</div>"; break;
case 'quote': $replacement = "<blockquote>$innertext</blockquote>" . $param? "<cite>$param</cite>" : ''; break;
case 'url': $replacement = '<a href="' . ($param? $param : $innertext) . "\">$innertext</a>"; break;
case 'img':
list($width, $height) = preg_split('`[Xx]`', $param);
$replacement = "<img src=\"$innertext\" " . (is_numeric($width)? "width=\"$width\" " : '') . (is_numeric($height)? "height=\"$height\" " : '') . '/>';
break;
case 'video':
$videourl = parse_url($innertext);
parse_str($videourl['query'], $videoquery);
if (strpos($videourl['host'], 'youtube.com') !== FALSE) $replacement = '<embed src="http://www.youtube.com/v/' . $videoquery['v'] . '" type="application/x-shockwave-flash" width="425" height="344"></embed>';
if (strpos($videourl['host'], 'google.com') !== FALSE) $replacement = '<embed src="http://video.google.com/googleplayer.swf?docid=' . $videoquery['docid'] . '" width="400" height="326" type="application/x-shockwave-flash"></embed>';
break;
}
$string = str_replace($match, $replacement, $string);
}
return $string;
}
Den koden fungerar helt ok men problemet är att när man försöker göra
Citat:
Jag är en kaka
så outputtas ingenting (gjorde mellanslag så efter quote så inte Sweclockers bbCode tar den)
Kör man såhär:
[quote jag är en häst]jag är en kaka[/quote]
Så outputtas åtminstonde "jag är en häst" inom <cite> taggarna men "jag är en kaka" outputtas inte där heller
Så, någon som har en aning om varför?
Hur kan syltkakor överleva i det vilda utan ögon?