Autor Zpráva
Atsor
Profil
Ahoj, lámu si hlavu s následujícím. Jedná se o systém phpBB3, který má ve vzhledu nastavenou tabulku tak, aby každý sudý řádek tabulky měl určitou světlejší barvu (class="row1") a každý lichý tmavší barvu (class="row2"). Toto se mění pouze u řádků, ne u sloupců.

Já bych chtěl vytvořit BBCode, který by vypadal takto:

[TABULKA]text1 | text2 | text3
text4 | text 5 | text6[/TABULKA]

Kdy by znak "|" odděloval sloupce (tedy každý text v jednom sloupci) a každé odentrování by znamenalo další řádek tabulky s tím, že by seděla změna barev (row1, row2, row1, row2). Zde Vám dám ukázku jednoduché tabulky o dvou řádcích společně se změnou barev řádků:
<table class="tablebg" id="table1">
<td class="row1">test</td>
</tr>
<tr>
<td class="row2">&nbsp;</td>
</tr></table>

Díky za rady :)
Kcko
Profil
Zkus se inspirovat timto, kdyz to nepujde, tak to zkusim napsat, do svyho webiku by se mi to mozna taky hodilo


$string = preg_replace_callback("/\[list=(ul|ol)\][\r\n]+(.+?)[\r\n]+\[\/list\][\r\n]*/is", 'Str::encodeList', $string);


public static function encodeList($matches)
	{
		$preg = preg_replace("#[\r\n]+#", '</li><li>', trim($matches[2]));
		
		if (trim($matches[1]) == 'ul')
			return '<ul class="limbb"><li>'.$preg.'</li></ul>';
		else
			return '<ol class="limbb"><li>'.$preg.'</li></ol>';
				
	}
Atsor
Profil
Wau, tak toto mi moc nepomohlo.

Kde si to vytáhl, možná to by mi dalo facku...
Kcko
Profil
vytahl jsem to z nejakeho souboru fora miniBB.
Kcko
Profil
Atsor:
Jinak tedy mensi inspirace



	public static function encodeTable($matches)
	{
	
		
		$out = '';
		
		$table = $matches[1];
		$rows  = explode("\n", $table);
		foreach ($rows as $row)
		{
			$out .= '<tr>';
			$row = trim($row);
			$cols = explode("|", $row);
			foreach ($cols as $col)
			{
				$col = trim($col);
				$out .= '<td>'.$col.'</td>';
			}
			$out .= '</tr>';
		}
		
		return '<table border=1>'.$out.'</table>';
				
	}
	
	
	$string = preg_replace_callback("/\[table\][\r\n]*(.+?)[\r\n]*\[\/table\]/is", 'Str::encodeTable', $string);
	
	



Doosetri a douprav si to dle libosti, zakladni funkcionalita je myslim jasna.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: