Untested, hope it helps.
PHP Code:
function handle_card_bbc ($string) {
$cards = array_map(create_function('$s', 'return trim($s);'), explode('|', $string));
$suits = array('s', 'h', 'c', 'd');
$ranks = array('A', 'K', 'Q', 'J', '10', '9', '8', '7', '6', '5', '4', '3', '2');
$return = '';
foreach ($cards as $card) {
switch(strlen($card)) {
case 2:
$rank = $card{0};
$suit = $card{1};
break;
case 3:
$rank = substr($card, 0, 2);
$suit = $card{3};
break;
default:
return '';
}
if (!in_array($rank, $ranks) || !in_array($suit, $suits)) {
return '';
}
// filename: suit_rank.gif
$filename = $suit . '_' . $rank . '.gif';
$return .= '<img src="images/cards/' . $filename . '" class="card" />';
}
return $return;
}
$string = 'Check out these cards [cards]2c|4d|Ac[/cards] neat, eh?';
$string = preg_replace('~\[cards\](.+?)\[/cards\]~ei', "handle_card_bbc('\\1')", $string);
Bookmarks