Mehr im BBCODE?

vodka

Mitglied
Hallo also ihr kennt sicher das Klapptext System! Ich will das im BBCode weil sonst muss man immer den ganzen HTML code schreiben z.b. bei mir so:

PHP:
<a href="javascript:swap('news1');">Mehr</a><br>
<span id="news1" style="display: none">
Hier das im Klapptext
</span>

Weis jemand wie ich das am besten mache das ich am schluss nur noch so schreiben kann:

[klapptext=Mehr]Das ist im Klapptext drin[/klapptext]

Und das die "span id" immer die "id" ist von den News!

Danke im Voraus
 
Vielleicht geht es damit:
PHP:
<?
$text = str_replace("[klapptext]", "<a href=\"javascript:swap('".$NewsID."');\">Mehr</a><br> 
<span id=\"".$NewsID."\" style=\"display: none\">", $text);
$text = str_replace("[/klapptext]", "</span>", $text);
?>
Bin mir aber nicht sicher, ob auch die ID mit übergeben wird. Probier es einfach mal aus...
 
Damit wir alle Formen durcharbeiten hier nochmal der Code mit Regex :)

Code:
<?php

$news_id = '1';

$string = <<<STRING
[klapptext=Drück mich]Das ist im Klapptext drin[/klapptext]
Noch ein komischer Text
[klapptexT=noch mehr] Und wieder was zum ausklappen[/klApPtext]
STRING;

preg_match_all("%\[klapptext=(.*)\](.*)\[/klapptext\]%isU", $string, $match);
$zaehler = 0;
for($i=0; $i < count($match[0]); $i++) {
	$new_news_id = $news_id .'_'. $zaehler;
	$ltext = $match[1][$i];
	$desc = $match[2][$i];

	$new = <<<MATCH
	<a href="javascript:swap('$new_news_id');">$ltext</a><br>
	<span id="$new_news_id" style="display: none">
		$desc
	</span>
MATCH;

	$string = str_replace($match[0][$i], $new,  $string);
	$zaehler++;
}
echo $string;
?>

edit: nachdem ich feststellte, dass mein Code eigentlich Müll war hab ich ein Neuen gemacht ;) Der geht nun. Habs gerade nochmal getestet.
 
Zuletzt bearbeitet:
hi,

ich suche auch so ein feature, wie das mit den bbcode und dem klapptext. Allersdings wenn ich des Beispiel übernehm bekomm ich folgende Fehler:

PHP:
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /xx/xx/xx/news.php on line 43

Parse error: parse error, unexpected '[' in /xx/xx/xx/xx/news.php on line 43

Kann mir wer da helfen?

Gruß
 
Kennt hierrauf keiner eine Lösung? Ich wär au mit was neuem zufrieden.

ich brauch halt nur den klapptext als bbcode, damits unser letzter Newsposter blickt :)


Gruß
 
Will jetzt keine Standardantwort nennen, aber ich werd drauf zurückgreifen. Ohne Code gibts natürlich keine Antworten.

Also das was ich geschrieben hab geht ja. Habs getestet und noch keiner hatte sich beschwert. Vielleicht was beim Kopieren falsch?

Also ne 1:1-Kopie sollte gehen und wenn dann schau Zeile 43. Was ist da?
 
Also ich brauch das ohne News ID, weil des überflüssig ist.

Beispiel: [klapptext=kein vordefinierter Text]blub[/klapptext]


also wie sowas:
PHP:
$text = eregi_replace("\\[ img]([^\\[]*)\\[ /img]","<img src=\"\\1\" border=0>",$text);


Gruß
 
Sorr aber das ist nun nicht wirklich schwer umzuändern. Wenn du nichts mit PHP anfangen kannst dann lies dir die Einsteiger-Tutorials durch. Man sieht doch ganz klar, was man ändern muss, damit man das ohne News-ID machst. Versuchs mal mit dem anderen Beispiel.
 
Hier habe auch noch nen Beispiel Code:
Mit dem Kann man unendlich viele Klapptexte in seine News oder sonstiges einbinden :), bei mir funktioniert es :)
PHP Code
PHP:
<?php 
if (!function_exists(bbcode))
	{
	function bbcode($s)
		{
		$bbcode_search[] = "#\[toggle=(.*?)\](.*?)\[/toggle\]#sie";
		$bbcode_replace[] = 'bbcode_toggle("$2", "$1")';
				
		$bbcode_search[] = "#\[more=(.*?)\](.*?)\[/more\]#sie";
		$bbcode_replace[] = 'bbcode_toggle("$2", "$1")';

		$s = preg_replace($bbcode_search, $bbcode_replace, $s);
		
		return $s;
		}
	}

if (!function_exists(bbcode_toggle))
	{
	function bbcode_toggle($s, $n = "Toggle")
		{
		$s = '<a id="toggle" onClick="toggle2(this);" onMouseOver="this.style.cursor=\'hand\';"><img src="images/expand.gif" border="0" alt="Maximieren" align="middle" /> '.$n.'</a><div style="display: none">'.$s.'</div>';
		
		return $s;
		}
	}
?>
Javascript
Code:
function toggle2(obj)
	{
	if (obj.nextSibling)
		{
		obj.firstChild.src = (obj.nextSibling.style.display == 'none') ? 'images/collapse.gif' : 'images/expand.gif';
		obj.firstChild.alt = (obj.nextSibling.style.display == 'none') ? 'Minimieren' : 'Maximieren';
		obj.nextSibling.style.display = (obj.nextSibling.style.display == 'none') ? 'block' : 'none';
		}
	}

Den Javascript hatte ich mal hier im Forum gefunden, das heist also suchen lohnt sich :D.

mfg.
Maxcube
 
Zuletzt bearbeitet:
Zurück