<?php
/*
11-03-2009, Toby Hinloopen
*/
class bbcode {
	
	public static $translationtable = array(
		array(
			'bbname' => 'b',
			'bbtagtype' => 'normal',
			'arguments' => array(),
			'translation' => array('htmlname','strong'),
		),
		array(
			'bbname' => 'url',
			'bbtagtype' => 'normal',
			'arguments' => array(
				/*REQUIRED , NAME , TYPE*/
				array(true,'href','string'),
			),
			'translation' => array('customtag','<a href="" target="_blank"></a>',array(9=>'href',27=>'innerHTML')),
		),
		array(
			'bbname' => 'multiply',
			'bbtagtype' => 'selfclosing',
			'arguments' => array(
				array(true,'x','int'),
				array(true,'y','int'),
			),
			'translation' => array(
				'function',
				create_function(
					'$tagname,$innerHTML,$args',
					'return $args[\'x\']*$args[\'y\'];'
				),
			),
		),
	);
	
	public static function parse($string) {
		
		echo '<br/>input: ';
		col('#d00','"'.addslashes($string).'"');
		
	}
	
	public static function toHTML($string) {
		
		$BBcode = self::parse($string);
		
	}
	
}
	
function no_lf($string) {
	$string = str_replace(array("\r","\n"),'',$string);
	return $string;
}

function html_escape($string) {
	$string = htmlentities($string,ENT_QUOTES,'UTF-8');
	return $string;
}

function col($color,$string) {
	echo '<span style="color:'.$color.';">'.$string.'</span>';
}
?>


Met de bovenstaande code krijg ik een error:
"Parse error: syntax error, unexpected '(', expecting ')' in C:\xampp\htdocs\BBcode\class.bbcode.php on line 33"

Waarom???
als ik de functie "create_functie()" tussen /* en */ gooi, krijg ik geen errors.

handige link:
http://nl2.php.net/manual/en/function.create-function.php

btw, als ik de functie "create_function" vervang door een willekeurige andere functie, blijft die error. Ik vind het een beetje extreem vaag.

array(
       'bbname' => 'multiply',
       'bbtagtype' => 'selfclosing',
       'arguments' => array(
          array(true,'x','int'),
          array(true,'y','int'),
       ),

Regel 29 sluit je volgens mij niet goed af?

Tip: als je een dergelijke error krijgt, kan je er eigenlijk altijd vanuit gaan dat je ergens iets niet goed afgesloten (of geopend) hebt.
Als ik "create_function()" vervang door "array()" werkt het script wel...
probeem is nog steeds niet opgelost.
Je kan daar gewoon geen functies aanroepen, ook volstrekt onlogisch dat te willen trouwens.

@Kasper: Je mag een extra komma aan het eind hebben.
Waarom mag dat niet en waarom is dat onlogisch?

als ik zeg $a = create_function(); werkt het wel
mag ik dan ook $a['function'] = create_function gebruiken? lijkt me wel.
maar waarom dan niet binnen een static object?
Jij hebt op meerdere plaatsen een , (komma) teveel staan.
Achteraan regel 12, 19, 21, 28, 35, 36 en 37.
SanThe schreef op 13.03.2009 16:25
Jij hebt op meerdere plaatsen een , (komma) teveel staan.
Achteraan regel 12, 19, 21, 28, 35, 36 en 37.

Je mag achter de laatste array item een komma hebben staan:
<?php
$array = array(
'iets' => 'iets',
'iets2' => 'iets2',
'iets3' => 'iets3',
);

Dit mag.
GaMer13 schreef op 13.03.2009 16:26
[quote='SanThe schreef op 13.03.2009 16:25']Jij hebt op meerdere plaatsen een , (komma) teveel staan.
Achteraan regel 12, 19, 21, 28, 35, 36 en 37.

Je mag achter de laatste array item een komma hebben staan:
<?php
$array = array(
'iets' => 'iets',
'iets2' => 'iets2',
'iets3' => 'iets3',
);

Dit mag.[/quote]
Wist ik niet.

Edit: Bij mij werkt het trouwens gewoon.

Reageren