English | Magyar
JS ki | CSS ki | Ékezetek ki | HiContrast
Lapozó:  (0 - 1428) 
<== | ==>
Ugrás a végére | Összes megjelenítése | Utolsó oldal
OpenOpera patches | Opera-SSL patches | Opera 12.15 source (Git repository) | Opera 12.15 source (Torrent) | Opera internal pages | Otter Browser Linux x64 - Qt5.15.2/QtWebKit5.602.1 (2024.12.02. 21:02)
OS for MC680x0 | OS for PPC | OS for Sparc64 | besztofbégéaefcé | CSÉNDZSLOG | WebToolz | DDG Shit Filter | Google Shit Filter | Progz | Fast CSS Box | Browser | OS | Agent | Statisztika | BBCode
Monospace font-family: Courier New | Browser default monospace
Email értesítő / Email notification ===> 
Keresés
Σ: 1 post

TCH  (statz) Főfasz
#1, Főfasz (10466)
8314 | #0fd8 | ^ | Idézet | Sun, 23 May 2010 15:56:52 +02
188.36.*.* Unknown Unknown Hungary *.dsl.pool.telekom.hu
Na, akkor egy kis BBCode tanfolyam.

BBCode-ból 4 féle van.

0. [tag]tartalom[/tag]
1. [tag=paraméter]tartalom[/tag]
2. [tag] (önzáró)
3. [tag paramnév0=paramérték0 paramnév1=paramérték0 ...]tartalom[/tag]

A 0. feldolgozása a köv képpen néz ki:
function bb_0($text, $tag, $r0, $r1, $r2 = '')
{
	$beg = '[' . $tag . ']';
	$lbeg = strlen($beg);
	$end = '[/' . $tag . ']';
	$lend = strlen($end);
	while (($begpos = stripos($text, $beg, 0)) !== false)
	{
		if (($endpos = stripos($text, $end, $begpos)) !== false)
		{
			$midpos = $begpos + $lbeg;
			$pre = substr($text, 0, $begpos);
			$mid = substr($text, $midpos, $endpos - $midpos);
			$pst = substr($text, $endpos + $lend);
			$text = $pre . $r0 . $mid . $r1;
			if ($r2 != '')
			{
				$text .= $mid . $r2;
			}
			$text .= $pst;
		}
		else
		{
			return $text;
		}
	}
	return $text;
}
Lényegében csak megkeresi a "[tag]" részt, keres utána egy "[/tag]" részt és ha talál, akkor cseréli őket a megadott részre.

Az 1. feldolgozása:
function bb_1($text, $tag, $r0, $r1, $r2)
{
	$beg = '[' . $tag . '=';
	$lbeg = strlen($beg);
	$end = '[/' . $tag . ']';
	$lend = strlen($end);
	while (($begpos = strpos($text, $beg, 0)) !== false)
	{
		if (($clspos = stripos($text, ']', $begpos)) !== false)
		{
			if (($endpos = stripos($text, $end, $clspos)) !== false)
			{
				$parpos = $begpos + $lbeg;
				$midpos = $clspos + 1;
				$pre = substr($text, 0, $begpos);
				$par = substr($text, $parpos, $clspos - $parpos);
				$mid = substr($text, $midpos, $endpos - $midpos);
				$pst = substr($text, $endpos + $lend);
				$text = $pre . $r0 . $par . $r1 . $mid . $r2 . $pst;
			}
			else
			{
				return $text;
			}
		}
		else
		{
			return $text;
		}
	}
	return $text;
}
Ugyanaz mint az előbb, csak itt "[tag=" részt keres először, aztán a záró "]" részt, majd a végén a "[/tag]" részt.

A 2. a legegyszerűbb:
function bb_2($text, $tag, $r0)
{
	return str_replace('[' . $tag . ']', $r0, $text);
}
Nem hiszem, hogy bármilyen magyarázat szükséges lenne.

A 3. a legbonyolultabb:
function bb_3($text, $tag, $r0, $r1, $r2, $params = array())
{
	$beg = '[' . $tag . ' ';
	$lbeg = strlen($beg);
	$end = '[/' . $tag . ']';
	$lend = strlen($end);
	while (($begpos = strpos($text, $beg, 0)) !== false)
	{
		if (($clspos = stripos($text, ']', $begpos)) !== false)
		{
			if (($endpos = stripos($text, $end, $clspos)) !== false)
			{
				$parpos = $begpos + $lbeg;
				$midpos = $clspos + 1;
				$pre = substr($text, 0, $begpos);
				$par = substr($text, $parpos, $clspos - $parpos);
				$mid = substr($text, $midpos, $endpos - $midpos);
				$pst = substr($text, $endpos + $lend);
				$pars = explode(' ', $par);
				$par = '';
				for ($i = 0; $i < count($pars); $i++)
				{
					$current = explode('=', $pars[$i]);
					if ($params[$current[0]] != '')
					{
						$par .= ' ' . $params[$current[0]] . '="' . $current[1] . '"';
					}
				}
				$text = $pre . $r0 . $par . $r1 . $mid . $r2 . $pst;
			}
			else
			{
				return $text;
			}
		}
		else
		{
			return $text;
		}
	}
	return $text;
}
Lényege, hogy a $params paraméterben adhatod meg neki, hogy melyik belső paramétert mire cserélje. A keresés úgy megy, hogy "[tag " (space is benne van!) részt keres először, majd megkeresi a "]" részt. Utána a kettő közöttit feldarabolja spacek szerint, majd a darabokat "=" jel szerint. Első a param neve, a második a param értéke. Amennyiben a a param neve szerepel a $param tömbben, akkor kicseréli arra, ami meg van adva benne, majd hozzáfűzi az értéket is. Aztán megkeresi a szokásos "[/tag]" zárást és csumi.

Ennyi az egész. Hozzáteszem, a szmájlik NEM BBCode tagek.

Ha nem akarsz szarakodni ezeknek a felparaméterezésével, akkor itt van egy feldolgozó függvény, ami támogat alapból egy csomó szart:
function bbcode2html($text)
{
	$tags = array
	(
		array('s', 0, '<s>', '</s>'),
		array('u', 0, '<u>', '</u>'),
		array('b', 0, '<b>', '</b>'),
		array('i', 0, '<i>', '</i>'),
		array('del', 0, '<s>', '</s>'),
		array('strike', 0, '<s>', '</s>'),
		array('code', 0, '<pre>', '</pre>'),
		array('cite', 0, '<cite>', '</cite>'),
		array('quote', 0, '<blockquote><div>', '</div></blockquote>'),
		array('embed', 0, '<embed src="', '" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385" />'),
		array('list', 0, '<ul>', '</ul>'),
		array('olist', 0, '<ol>', '</ol>'),
		array('olistua', 0, '<ol style="list-style-type: upper-alpha">', '</ol>'),
		array('olistla', 0, '<ol style="list-style-type: lower-alpha">', '</ol>'),
		array('olistur', 0, '<ol style="list-style-type: upper-roman">', '</ol>'),
		array('olistlr', 0, '<ol style="list-style-type: lower-roman">', '</ol>'),
		array('li', 0, '<li>', '</li>'),
		array('img', 0, '<img src="', '" />'),
		array('url', 0, '<a href="', '" target="_blank">', '</a>'),
		array('url', 1, '<a href="', '" target="_blank">', '</a>'),
		array('size', 1, '<font size="', '">', '</font>'),
		array('face', 1, '<font face="', '">', '</font>'),
		array('color', 1, '<font color="#', '">', '</font>'),
		array('hr', 2, '<hr />'),
		array('table', 3, '<table', '>', '</table>', array("cellpadding" => 'cellpadding', "cellspacing" => 'cellspacing', "class" => 'class', "align" => 'align', "bgcolor" => 'bgcolor', "width" => 'width')),
		array('tr', 3, '<tr', '>', '</tr>', array("class" => 'class', "align" => 'align', "bgcolor" => 'bgcolor', "valign" => 'valign')),
		array('th', 3, '<th', '>', '</th>', array("class" => 'class', "align" => 'align', "bgcolor" => 'bgcolor', "width" => 'width', "height" => 'height', "nowrap" => 'nowrap', "rowspan" => 'rowspan')),
		array('td', 3, '<td', '>', '</td>', array("class" => 'class', "align" => 'align', "bgcolor" => 'bgcolor', "width" => 'width', "height" => 'height', "nowrap" => 'nowrap', "rowspan" => 'rowspan')),
	);
	for ($i = 0; $i < count($tags); $i++)
	{
		$data = $tags[$i];
		$type = ($data[1] & 0x03);
		switch($type)
		{
			case 0:
				$text = bb_0($text, $data[0], $data[2], $data[3], $data[4]);
			break;
			case 1:
				$text = bb_1($text, $data[0], $data[2], $data[3], $data[4]);
			break;
			case 2:
				$text = bb_2($text, $data[0], $data[2]);
			break;
			case 3:
				$text = bb_3($text, $data[0], $data[2], $data[3], $data[4], $data[5]);
			break;
		}
	}
	return $text;
}


szopást szórakozást! :)


English | Magyar
JS ki | CSS ki | Ékezetek ki | HiContrast
Lapozó:  (0 - 1428) 
<== | ==>
Ugrás a végére | Összes megjelenítése | Utolsó oldal
OpenOpera patches | Opera-SSL patches | Opera 12.15 source (Git repository) | Opera 12.15 source (Torrent) | Opera internal pages | Otter Browser Linux x64 - Qt5.15.2/QtWebKit5.602.1 (2024.12.02. 21:02)
OS for MC680x0 | OS for PPC | OS for Sparc64 | besztofbégéaefcé | CSÉNDZSLOG | WebToolz | DDG Shit Filter | Google Shit Filter | Progz | Fast CSS Box | Browser | OS | Agent | Statisztika | BBCode
Monospace font-family: Courier New | Browser default monospace
Email értesítő / Email notification ===> 
Keresés

Név: (max 255 byte)

Email: (max 255 byte) Nem kötelező!

Üzenet: (max 65536 kar.) 65536-0=65536




crap_vkn v4.34.0 by TCH
Thx to saxus for the escaped string decoder function (PHP), the realIP function (PHP) & the SQL handle layer (PHP), to thookerov for the int_divide function (PHP), to Jeff Anderson for the getSelText function (JS), to Alex King for the insertAtCursor function (JS), Flood3r for the new CSS styles, Pety for the spamprotection idea and some design and comfort ideas, MaxMind for the IP2Country database, famfamfam for the flags of countries and an unknown PHP programmer for the removeAccents function.



Kecskebaszók ide!