Seite 1 von 1

HTML und Text umwandlungsfunktion aus phpbb gesucht

Verfasst: 24.05.2006 08:22
von pc-nico
Morgen,

ich suche eine Funktion welche im phpbb integriert ist...
ich möchte sie für ein Newspostingscript verwenden.

Aufgabe:

In einem Textstring sollen alle HTML-Sonderzeichen wie < > " ä etc in die entsprechenden Codes umgewandelt werden z.B. -<- (ohne -)
Dabei soll enthaltender HTML-Quellcode aber nicht umgewandelt werden.

Die Funktion gibt es im PHPBB, aber leider finde, bzgw verstehe ich sie nicht...

könnt ihr mir helfen.......

Verfasst: 24.05.2006 08:24
von MartinITM

Verfasst: 24.05.2006 08:32
von pc-nico
ja die ist mir bekannt...
Leider macht die auch aus HTML Quellcode im String um:

Eingang:

Code: Alles auswählen

"Die ist ein <b>Test</b>"
Ausgang:

Code: Alles auswählen

"Die ist ein <b>Test</b>"  
Der HTML-Quellcode soll aber erhalten bleiben
Ausgabeziel also

Code: Alles auswählen

"Die ist ein <b>Test</b>" 

Verfasst: 24.05.2006 09:36
von MartinITM
probiers doch mal so

Code: Alles auswählen

  $text = "Hallo <a href="blah">bub</a> äüö"
  $find[] = 'ä';
  $find[] = 'ö';
  $find[] = 'ü';
  $find[] = '<';
  $find[] = '>';

  $replace[] = 'ae';
  $replace[] = 'oe';
  $replace[] = 'ue';
  $replace[] = '<';
  $replace[] = '&rt;';

  $text = str_replace($find, $replace, $text);

Verfasst: 24.05.2006 10:05
von pc-nico
nett gemeinter Versuch, aber dabei kommt das raus:

Code: Alles auswählen

"Hallo <a href="blah"&rt;bub</a&rt; aeueoe"
HTML Code ist wieder nicht mehr korrekt enthalten....

Verfasst: 24.05.2006 17:04
von MartinITM
Jo, hast recht. &rt; muss > sein

Code: Alles auswählen

<?php

$text = 'Hallo <a href="blah">bub</a> äüö';
  $find[] = 'ä';
  $find[] = 'ö';
  $find[] = 'ü';
  $find[] = '<';
  $find[] = '>';

  $replace[] = 'ae';
  $replace[] = 'oe';
  $replace[] = 'ue';
  $replace[] = '<';
  $replace[] = '>';

  echo $text = str_replace($find, $replace, $text);
  
  
?>
ergibt

Code: Alles auswählen

Hallo <a href="blah">bub</a> aeueoe
Du kannst da jedes Zeichen durch ein anderes ersetzen.
Aber soll dann der Link noch funktionieren?

Verfasst: 24.05.2006 18:31
von S2B
Ähm, und was bringt ihm das dann? Dann werden HTML-Tags doch trotzdem ersetzt...

aus der functions_post.php:

Code: Alles auswählen

		// If HTML is on, we try to make it safe
		// This approach is quite agressive and anything that does not look like a valid tag
		// is going to get converted to HTML entities
		$message = stripslashes($message);
		$html_match = '#<[^\w<]*(\w+)((?:"[^"]*"|\'[^\']*\'|[^<>\'"])+)?>#';
		$matches = array();

		$message_split = preg_split($html_match, $message);
		preg_match_all($html_match, $message, $matches);

		$message = '';

		foreach ($message_split as $part)
		{
			$tag = array(array_shift($matches[0]), array_shift($matches[1]), array_shift($matches[2]));
			$message .= htmlspecialchars($part) . clean_html($tag);
		}

		$message = addslashes($message);
Ein bisschen angepasst (z.B. ohne das clean_html()) sollte der Code das machen, was du magst. :wink:

Verfasst: 06.06.2006 10:01
von pc-nico
@S2B
Du hast das gefunden was ich suche...
werd das ganze mal ausprobieren...

danke @ all