Seite 2 von 2

Verfasst: 20.02.2003 08:20
von kickaha
Hi,
Ich hab´s jetzt mal der bbcode.php von 2.0.3 versucht - da gehts :roll:

Also steckt bei mir irgendwo ein Fehler drin... :cry:

... okay problem ist erstmal behoben... hab ein compare auf die beiden bbcode.php gemacht und alle meine änderungen in die bbcode.php von 2.0.3 übernommen...
das klappt jetzt... war wohl in der 2.0.1 noch ein kleiner fehler drinn ?!

Gruß
Kickaha

Verfasst: 20.02.2003 14:21
von esperitox
Hi,
@Jason ich hatte das Problem auch (im 2.0.0), damals hatte ich auf phpbb.com eine heisse Diskussion zu dem thema mit den "machern" von phpBB (ka ob der thread noch existiert damals wurde ja das Forum von phpbb.com komplett neu aufgesetzt) irgendjemand hatte mir dort ein script gegeben das aus dem HTML Code die Zeilenumbrüche entfernt siehe hier: Line Break Stripper vieleicht kannst du ja damit was anfangen?

esperitox

Edit: Hier ist auch ein Threads zu diesem thema auf phpbb.com:
http://www.phpbb.com/phpBB/viewtopic.ph ... light=HTML

Verfasst: 21.02.2003 10:53
von kickaha
Hallo...

Also wenn ich es richtig sehe wird der HTML-Code in der functions_post.php bearbeitet...
siehe hier:

Code: Alles auswählen

	if ( $html_on )
	{
		$allowed_html_tags = split(',', $board_config['allow_html_tags']);

		$end_html = 0;
		$start_html = 1;
		$tmp_message = '';
		$message = ' ' . $message . ' ';

		while ( $start_html = strpos($message, '<', $start_html) )
		{
			$tmp_message .= preg_replace($html_entities_match, $html_entities_replace, substr($message, $end_html + 1, ( $start_html - $end_html - 1 )));

			if ( $end_html = strpos($message, '>', $start_html) )
			{
				$length = $end_html - $start_html + 1;
				$hold_string = substr($message, $start_html, $length);

				if ( ( $unclosed_open = strrpos(' ' . $hold_string, '<') ) != 1 )
				{
					$tmp_message .= preg_replace($html_entities_match, $html_entities_replace, substr($hold_string, 0, $unclosed_open - 1));
					$hold_string = substr($hold_string, $unclosed_open - 1);
				}

				$tagallowed = false;
				for($i = 0; $i < sizeof($allowed_html_tags); $i++)
				{
					$match_tag = trim($allowed_html_tags[$i]);

					if ( preg_match('/^<\/?' . $match_tag . '\b/i', $hold_string) )
					{
						$tagallowed = true;
					}
				}

				$tmp_message .= ( $length && !$tagallowed ) ? preg_replace($html_entities_match, $html_entities_replace, $hold_string) : $hold_string;

				$start_html += $length;
			}
			else
			{
				$tmp_message .= preg_replace($html_entities_match, $html_entities_replace, substr($message, $start_html, strlen($message)));

				$start_html = strlen($message);
				$end_html = $start_html;
			}
		}

		if ( $end_html != strlen($message) && $tmp_message != '' )
		{
			$tmp_message .= preg_replace($html_entities_match, $html_entities_replace, substr($message, $end_html + 1));
		}

		$message = ( $tmp_message != '' ) ? trim($tmp_message) : trim($message);
	}
	else
	{
		$message = preg_replace($html_entities_match, $html_entities_replace, $message);
	}
Schult an den <br /> ist wohl die Funktion preg_replace.
Der HTML-Code (mit den <br />) steht dann in $message ?!
kann man jetzt dann nicht einfach alle <br /> aus $message wieder ausfiltern ?!

Ist das ne Idee, oder liege ich da ganz falsch ?! Was meint Ihr ???

Verfasst: 21.02.2003 14:06
von esperitox
Möglich wäre das schon denke ich aber dann würden alle Zeilenumbrüche gefiltert auch die in der normalen Nachricht und ich glaube kaum das deine User dann noch was posten ;)

esperitox