Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „Problem mit Ausgabe der '<' und '>' Zeichen“

Mew

Aktives Mitglied

Hallo Leute,

ich hoffe mir kann jemand bei meinem Problem helfen.

Ich habe folgende Funktion für Sonderzeichen, Bild und URL Umwandlung usw.:

PHP:
<?


function parse($str, $html = 0, $bbcode = 1, $url = 1, $email = 1, $img = 1, $br = 1, $uml = 1) {
        $str = trim($str);
        $str = preg_replace('/\S{60}/', '\0 ', $str);
if ($html == 0) {
  $str = htmlspecialchars($str);
	$str = htmlentities($str);
}

if ($bbcode == 1) {
        $str = preg_replace('=\[b\](.*)\[/b\]=Uis',
                            '<span style="font-weight:bold;">\1</span>',
                            $str);
        $str = preg_replace('=\[i\](.*)\[/i\]=Uis',
                            '<span style="font-style:italic;">\1</span>',
                            $str);
        $str = preg_replace('=\[u\](.*)\[/u\]=Uis',
                            '<span style="text-decoration:underline;">\1</span>',
                            $str);

		# Smilies
		$str = str_replace(':cool:', '<img src="images/smilies/cool.gif" />', $str);
		$str = str_replace(':freu:', '<img src="images/smilies/freu.gif" />', $str);
		$str = str_replace(':woow:', '<img src="images/smilies/woow.gif" />', $str);
		
		# Zitate
 		$str = preg_replace('=\[quote\](.*)\[/quote\]=Uis',
							'<p>Zitat:</p><div class="zitat">\1</div>',
							$str);

		# Code
 		$str = preg_replace('=\[code\](.*)\[/code\]=Uis','<p>Code:</p><div class="code">\1</div>', $str);
              
   		# PHP Code
 		$str = preg_replace('=\[php\](.*)\[/php\]=Uis',
							'<p>PHP Code:</p><div class="code">\1</div>',
							$str);
}
			
			
if ($url == 1) {
	//Aus http://url wird 
	$urlsuch[]="/([^]_a-z0-9-=\"'\/])((https?|ftp):\/\/|www\.)([^ \r\n\(\)\^\$!`\"'\|\[\]\{\}<>]*)/si";
	$urlsuch[]="/^((https?|ftp):\/\/|www\.)([^ \r\n\(\)\^\$!`\"'\|\[\]\{\}<>]*)/si";

	$urlreplace[]="\\1[url]\\2\\4[/url]";
	$urlreplace[]="[url]\\1\\3[/url]";
}
if ($email == 1) {
	//Aus [email]klaus@mustermann.de[/email] wird [email]klaus@mustermann.de [/email]
	$emailsuch[]="/([\s])([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))/si";
	$emailsuch[]="/^([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))/si";

	$emailreplace[]="\\1[email]\\2[/email]";

	$emailreplace[]="[email]\\0[/email]";

	$str = preg_replace($urlsuch, $urlreplace, $str);
	if (strpos($str, "@"))
 	   {
 	   $str = preg_replace($emailsuch, $emailreplace, $str);
 	   }
}
if ($url == 1) {
	//Die url's werden zu Links
	$str = preg_replace("/\[url\]www.(.*?)\[\/url\]/si", "<a target=\"_blank\" href=\"http://www.\\1\">www.\\1</a>", $str);

	$str = preg_replace("/\[url\](.*?)\[\/url\]/si", "<a target=\"_blank\" href=\"\\1\">\\1</a>", $str);

	$str = preg_replace("/\[url=www.(.*?)\](.*?)\[\/url\]/si", "<a target=\"_blank\" href=\"http://www.\\1\">\\2</a>", $str);

	$str = preg_replace("/\[url=(.*?)\](.*?)\[\/url\]/si", "<a target=\"_blank\" href=\"\\1\">\\2</a>", $str);
}
if ($email == 1) {
	//E-Mail Adressen werden zu links
	$str = preg_replace("/\[email\](.*?)\[\/email\]/si", "<a href=\"mailto:\\1\">\\1</a>", $str);

	$str = preg_replace("/\[email=(.*?)\](.*?)\[\/email\]/si", "<a href=\"mailto:\\1\">\\2</a>", $str);
}
if ($img == 1) {
	// wird als Bild angezeigt
	$str = preg_replace( '#\[img\](.*?)\[/img\]#sie', "'<img src=\"'.str_replace(' ', '', '\\1').'\" border=\"0\" alt=\"\" />'" , $str );  
}
if ($br == 1) {
        $str = nl2br($str);
}
if ($uml == 1) {
		   $str = ereg_replace( "[ä]" , "&auml;" , $str );
		   $str = ereg_replace( "[ü]" , "&uuml;" , $str );
		   $str = ereg_replace( "[ö]" , "&ouml;" , $str );
		   $str = ereg_replace( "[Ä]" , "&Auml;" , $str );
		   $str = ereg_replace( "[Ü]" , "&Uuml;" , $str );
		   $str = ereg_replace( "[Ö]" , "&Ouml;" , $str );
		   $str = ereg_replace( "[ß]" , "&szlig;" , $str );

}

return $str;


?>

Nun habe ich in meiner Datenbank einen Text gespeichert. In diesem Text kommt dann ein '<' und ein '>' vor. Z.B. bei <script> oder so.... Wenn ich dieses dann geparsed (wie das auch immer heißt) also parse($result); ausgebe, erscheint auf der Textseite statt dem '<' und '>' immer der html Wert als &alt; oder so....

Wie kann ich das ändern, das '<' und '>' ausgegeben werden? Vielen Dank
 

Mew

Aktives Mitglied

AW: Problem mit Ausgabe der '<' und '>' Zeichen

ja was ist damit?? Wie meinste das? Ist das falsch?
 

saila

Moderatorle

AW: Problem mit Ausgabe der '<' und '>' Zeichen

Nein, falsch ist es nicht, aber du kannst das auf zwei schnellere Möglichkeiten ändern. Zum einen str_repalce(); oder preg_replace().

Und irgendwie sieht mir deine Rückreferenzierung ungewöhnlich aus.
 

Mew

Aktives Mitglied

AW: Problem mit Ausgabe der '<' und '>' Zeichen

Nein, falsch ist es nicht, aber du kannst das auf zwei schnellere Möglichkeiten ändern. Zum einen str_repalce(); oder preg_replace().

Und irgendwie sieht mir deine Rückreferenzierung ungewöhnlich aus.

Was meinste mir Rückreferenzierung ?? Was sieht daran komisch aus?
 

saila

Moderatorle

AW: Problem mit Ausgabe der '<' und '>' Zeichen

Na du ersetzt einmal mit \\1 und einmal mit \1. Richtig ist aber lediglich \\1
 

Mew

Aktives Mitglied

AW: Problem mit Ausgabe der '<' und '>' Zeichen

okay vielen dank, das wusste ich noch nicht.... es klappt aber leider immer noch nicht :(

PHP:
<?


function parse($str, $html = 0, $bbcode = 1, $url = 1, $email = 1, $img = 1, $br = 1, $uml = 1) {
        $str = trim($str);
        $str = preg_replace('/\S{60}/', '\0 ', $str);
        
if ($html == 0) {
        $str = htmlspecialchars($str);
	      $str = htmlentities($str);
}

if ($bbcode == 1) {
        $str = preg_replace('=\[b\](.*)\[/b\]=Uis',
                            '<span style="font-weight:bold;">\\1</span>',
                            $str);
        $str = preg_replace('=\[i\](.*)\[/i\]=Uis',
                            '<span style="font-style:italic;">\\1</span>',
                            $str);
        $str = preg_replace('=\[u\](.*)\[/u\]=Uis',
                            '<span style="text-decoration:underline;">\\1</span>',
                            $str);

    		# Smilies
    		$str = str_replace(':cool:', '<img src="images/smilies/cool.gif" />', $str);
    		$str = str_replace(':freu:', '<img src="images/smilies/freu.gif" />', $str);
    		$str = str_replace(':woow:', '<img src="images/smilies/woow.gif" />', $str);
    		
    		# Zitate
     		$str = preg_replace('=\[quote\](.*)\[/quote\]=Uis','<p>Zitat:</p><div class="zitat">\\1</div>',$str);
    
    		# Code
     		$str = preg_replace('=\[code\](.*)\[/code\]=Uis','<p>Code:</p><div class="code">\\1</div>', $str);
                  
       		# PHP Code
     		$str = preg_replace('=\[php\](.*)\[/php\]=Uis','<p>PHP Code:</p><div class="code">\\1</div>',$str);
}
			
			
if ($url == 1) {
	//Aus http://url wird 
	$urlsuch[]="/([^]_a-z0-9-=\"'\/])((https?|ftp):\/\/|www\.)([^ \r\n\(\)\^\$!`\"'\|\[\]\{\}<>]*)/si";
	$urlsuch[]="/^((https?|ftp):\/\/|www\.)([^ \r\n\(\)\^\$!`\"'\|\[\]\{\}<>]*)/si";

	$urlreplace[]="\\1[url]\\2\\4[/url]";
	$urlreplace[]="[url]\\1\\3[/url]";
}
if ($email == 1) {
	//Aus [email]klaus@mustermann.de[/email] wird [email]klaus@mustermann.de [/email]
	$emailsuch[]="/([\s])([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))/si";
	$emailsuch[]="/^([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))/si";

	$emailreplace[]="\\1[email]\\2[/email]";

	$emailreplace[]="[email]\\0[/email]";

	$str = preg_replace($urlsuch, $urlreplace, $str);
	if (strpos($str, "@"))
 	   {
 	   $str = preg_replace($emailsuch, $emailreplace, $str);
 	   }
}
if ($url == 1) {
	//Die url's werden zu Links
	$str = preg_replace("/\[url\]www.(.*?)\[\/url\]/si", "<a target=\"_blank\" href=\"http://www.\\1\">www.\\1</a>", $str);

	$str = preg_replace("/\[url\](.*?)\[\/url\]/si", "<a target=\"_blank\" href=\"\\1\">\\1</a>", $str);

	$str = preg_replace("/\[url=www.(.*?)\](.*?)\[\/url\]/si", "<a target=\"_blank\" href=\"http://www.\\1\">\\2</a>", $str);

	$str = preg_replace("/\[url=(.*?)\](.*?)\[\/url\]/si", "<a target=\"_blank\" href=\"\\1\">\\2</a>", $str);
}
if ($email == 1) {
	//E-Mail Adressen werden zu links
	$str = preg_replace("/\[email\](.*?)\[\/email\]/si", "<a href=\"mailto:\\1\">\\1</a>", $str);

	$str = preg_replace("/\[email=(.*?)\](.*?)\[\/email\]/si", "<a href=\"mailto:\\1\">\\2</a>", $str);
}
if ($img == 1) {
	// wird als Bild angezeigt
	$str = preg_replace( '#\[img\](.*?)\[/img\]#sie', "'<img src=\"'.str_replace(' ', '', '\\1').'\" border=\"0\" alt=\"\" />'" , $str );  
}
if ($br == 1) {
        $str = nl2br($str);
}
if ($uml == 1) {
		   $str = str_replace( "[ä]" , "&auml;" , $str );
		   $str = str_replace( "[ü]" , "&uuml;" , $str );
		   $str = str_replace( "[ö]" , "&ouml;" , $str );
		   $str = str_replace( "[Ä]" , "&Auml;" , $str );
		   $str = str_replace( "[Ü]" , "&Uuml;" , $str );
		   $str = str_replace( "[Ö]" , "&Ouml;" , $str );
		   $str = str_replace( "[ß]" , "&szlig;" , $str );


}

return $str;

?>
 

saila

Moderatorle

AW: Problem mit Ausgabe der '<' und '>' Zeichen

Was funktioniert nicht?

Abgesehen davon nutze einfach die Klasse von Christian Seiler wie von Blackout vorgeschlagen.
 

Mew

Aktives Mitglied

AW: Problem mit Ausgabe der '<' und '>' Zeichen

genau das was der titel sagt klappt nicht! Problem mit Ausgabe der '<' und '>' Zeichen
 

Mew

Aktives Mitglied

AW: Problem mit Ausgabe der '<' und '>' Zeichen

Nun habe ich in meiner Datenbank einen Text gespeichert. In diesem Text kommt dann ein '<' und ein '>' vor. Z.B. bei <script> oder so.... Wenn ich dieses dann geparsed (wie das auch immer heißt) also parse($result); ausgebe, erscheint auf der Textseite statt dem '<' und '>' immer der html Wert als &lt; oder so....

Wie kann ich das ändern, das '<' und '>' ausgegeben werden? Vielen Dank

hmm habe ich das unverständlich geschrieben????
Also wenn in der DB z.B. ... <script> ... steht gibt er das aus: ... &lt; script &gt; ...
Also er änder das < und > einfach.... was muss ich machen das er < und > ausgibt?
 

saila

Moderatorle

AW: Problem mit Ausgabe der '<' und '>' Zeichen

Dann halt eben ohne Schwamm....

Benutzt du einen Texteditor wie FCK oder Tinymce?
Wie sieht der Text in der DB-Spalte genau aus? Steht da < oder &lt;

Falls da < steht, ist die Frage zum einen:
- wo läuft der $string noch mal durch eine Änderung?
- oder wird html codiert?

Wenn da ein &lt; in der DB steht:
- dann muss der Inhalt lediglich noch mal per
$str = str_replace( '&lt;' , '<' , $string ); /* bzw. */
$str = str_replace( '&rt;' , '>' , $string );

laufen.
 

Mew

Aktives Mitglied

AW: Problem mit Ausgabe der '<' und '>' Zeichen

nein ich benutze keinen Texteditor... In der DB Spalte steht < ^^ sagte ich schon oda??
der läuft durch keine Änderung.... html codirt? nur das was in der function steht...

Danke
 

saila

Moderatorle

AW: Problem mit Ausgabe der '<' und '>' Zeichen

Wenn ich das hier in eine Datei klopfe
PHP:
<?
function parse($str, $html = 0, $bbcode = 1, $url = 1, $email = 1, $img = 1, $br = 1, $uml = 1) {
        $str = trim($str);
        $str = preg_replace('/\S{60}/', '\0 ', $str);
        
    if ($html == 0) {
        $str = htmlspecialchars($str);
          $str = htmlentities($str);
    }

    if ($bbcode == 1) {
        $str = preg_replace('=\[b\](.*)\[/b\]=Uis',
                            '<span style="font-weight:bold;">\\1</span>',
                            $str);
        $str = preg_replace('=\[i\](.*)\[/i\]=Uis',
                            '<span style="font-style:italic;">\\1</span>',
                            $str);
        $str = preg_replace('=\[u\](.*)\[/u\]=Uis',
                            '<span style="text-decoration:underline;">\\1</span>',
                            $str);

            # Smilies
            $str = str_replace(':cool:', '<img src="images/smilies/cool.gif" />', $str);
            $str = str_replace(':freu:', '<img src="images/smilies/freu.gif" />', $str);
            $str = str_replace(':woow:', '<img src="images/smilies/woow.gif" />', $str);
            
            # Zitate
             $str = preg_replace('=\[quote\](.*)\[/quote\]=Uis','<p>Zitat:</p><div class="zitat">\\1</div>',$str);
    
            # Code
             $str = preg_replace('=\[code\](.*)\[/code\]=Uis','<p>Code:</p><div class="code">\\1</div>', $str);
                  
               # PHP Code
             $str = preg_replace('=\[php\](.*)\[/php\]=Uis','<p>PHP Code:</p><div class="code">\\1</div>',$str);
    }
            
            
    if ($url == 1) {
        //Aus http://url wird 
        $urlsuch[]="/([^]_a-z0-9-=\"'\/])((https?|ftp):\/\/|www\.)([^ \r\n\(\)\^\$!`\"'\|\[\]\{\}<>]*)/si";
        $urlsuch[]="/^((https?|ftp):\/\/|www\.)([^ \r\n\(\)\^\$!`\"'\|\[\]\{\}<>]*)/si";

        $urlreplace[]="\\1[url]\\2\\4[/url]";
        $urlreplace[]="[url]\\1\\3[/url]";
    }
    
    if ($email == 1) {
        //Aus [email]klaus@mustermann.de[/email] wird [email]klaus@mustermann.de [/email]
        $emailsuch[]="/([\s])([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))/si";
        $emailsuch[]="/^([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))/si";

        $emailreplace[]="\\1[email]\\2[/email]";

        $emailreplace[]="[email]\\0[/email]";

        $str = preg_replace($urlsuch, $urlreplace, $str);

        if (strpos($str, "@")) {
            $str = preg_replace($emailsuch, $emailreplace, $str);
        }
    }
    
    if ($url == 1) {
        //Die url's werden zu Links
        $str = preg_replace("/\[url\]www.(.*?)\[\/url\]/si", "<a target=\"_blank\" href=\"http://www.\\1\">www.\\1</a>", $str);

        $str = preg_replace("/\[url\](.*?)\[\/url\]/si", "<a target=\"_blank\" href=\"\\1\">\\1</a>", $str);

        $str = preg_replace("/\[url=www.(.*?)\](.*?)\[\/url\]/si", "<a target=\"_blank\" href=\"http://www.\\1\">\\2</a>", $str);

        $str = preg_replace("/\[url=(.*?)\](.*?)\[\/url\]/si", "<a target=\"_blank\" href=\"\\1\">\\2</a>", $str);
    }
    
    if ($email == 1) {
        //E-Mail Adressen werden zu links
        $str = preg_replace("/\[email\](.*?)\[\/email\]/si", "<a href=\"mailto:\\1\">\\1</a>", $str);

        $str = preg_replace("/\[email=(.*?)\](.*?)\[\/email\]/si", "<a href=\"mailto:\\1\">\\2</a>", $str);
    }
    
    if ($img == 1) {
        // wird als Bild angezeigt
        $str = preg_replace( '#\[img\](.*?)\[/img\]#sie', "'<img src=\"'.str_replace(' ', '', '\\1').'\" border=\"0\" alt=\"\" />'" , $str );  
    }
    
    if ($br == 1) {
        $str = nl2br($str);
    }
    
    if ($uml == 1) {
        $str = str_replace( "[ä]" , "&auml;" , $str );
        $str = str_replace( "[ü]" , "&uuml;" , $str );
        $str = str_replace( "[ö]" , "&ouml;" , $str );
        $str = str_replace( "[Ä]" , "&Auml;" , $str );
        $str = str_replace( "[Ü]" , "&Uuml;" , $str );
        $str = str_replace( "[Ö]" , "&Ouml;" , $str );
        $str = str_replace( "[ß]" , "&szlig;" , $str );
    }

    return $str;
}

$str = '<script></script>';

echo parse( $str , 1 );
?>

Dann habe ich im Quelltext <script></script> stehen. Bei mir läuft es also.
 

Mew

Aktives Mitglied

AW: Problem mit Ausgabe der '<' und '>' Zeichen

Was heißt denn die ,1 ????? Das habe ich übernommen und nun klappt es so halb ^^ Danke, aber warum geht es jetzt???
Im Quellcode sieht man das < und > also man sieht diesen code:

Code:
<style type="text/css"><br />
<!--<br />
CODE HIER<br />
//--><br />
</style

Aber auf der seite sieht man nix^^ XD
 
Zuletzt bearbeitet:

Christian

verpeilt & verschallert

AW: Problem mit Ausgabe der '<' und '>' Zeichen

Auch wenn ich deinen letzten Post nicht verstehe... Aber um das Ganze ein wenig abzukürzen implementier doch einfach Sailas letzten Lösungsvorschlag oder noch viel einfacher: Benutze einfach die bugfreie Klasse, die blackout gepostet hat.
 

Christian

verpeilt & verschallert

AW: Problem mit Ausgabe der '<' und '>' Zeichen

Auch wenn ich deinen letzten Post nicht verstehe... Aber um das Ganze ein wenig abzukürzen implementier doch einfach Sailas letzten Lösungsvorschlag (Auch wenn es &rt; nicht gibt;) [&gt;]) oder noch viel einfacher: Benutze einfach die bugfreie Klasse, die blackout gepostet hat.
 

saila

Moderatorle

AW: Problem mit Ausgabe der '<' und '>' Zeichen

Was heißt denn die ,1 ????? Das habe ich übernommen und nun klappt es so halb ^^ Danke, aber warum geht es jetzt???
Im Quellcode sieht man das < und > also man sieht diesen code:

Code:
<style type="text/css"><br />
<!--<br />
CODE HIER<br />
//--><br />
</style
Aber auf der seite sieht man nix^^ XD
Willst du mir jetzt mitteilen, das du deine eigene Funktion nicht vestehst?

Klar klappt es nur halb. Der Grund liegt in deiner Funktion bzgl. html-Teil. Wenn du html als FALSE in der Funktion stellst, wird dein gesamter Quellcode aus der DB in HTML-Code-Zeichencode umgewandelt. Deshalb eben die 1 (weil 1 = html = true) beim Aufruf deiner Funktion, so dass eben genau das nicht geschieht.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
175.155
Beiträge
2.581.854
Mitglieder
67.221
Neuestes Mitglied
opaklaus
Oben